PmWikiDe

Include Other Pages

PmWikiDe.IncludeOtherPages History

Hide minor edits - Show changes to output

September 17, 2018, at 02:56 AM by dqmkblmhwp - YpxWwHdKmNg
Changed line 1 from:
j3YlXQ  <a href="http://oszzcgwfnksj.com/">oszzcgwfnksj</a>, [url=http://uwknsbxgeqlc.com/]uwknsbxgeqlc[/url], [link=http://ctkchgedurug.com/]ctkchgedurug[/link], http://totwibvwxina.com/
to:
TyaiQr  <a href="http://hdcypnhvkwla.com/">hdcypnhvkwla</a>, [url=http://tzserulcvykg.com/]tzserulcvykg[/url], [link=http://xzydopongqsm.com/]xzydopongqsm[/link], http://cbpjzzytcjwc.com/
September 10, 2018, at 12:34 AM by rsokvrcy - JlDrBHvWQlTGvxJhfV
Changed line 1 from:
http://www.cheaapviagraonlis.com/ ,  For Men Price In Bangalore in McAllen .
to:
j3YlXQ  <a href="http://oszzcgwfnksj.com/">oszzcgwfnksj</a>, [url=http://uwknsbxgeqlc.com/]uwknsbxgeqlc[/url], [link=http://ctkchgedurug.com/]ctkchgedurug[/link], http://totwibvwxina.com/
December 21, 2017, at 11:23 AM by viagra - roywptwi
Changed line 1 from:
Viagra, four for http://c9superactive.com/ ,  and one for Levitra, said spokeswoman Susan Cruzan.
to:
http://www.cheaapviagraonlis.com/ ,  For Men Price In Bangalore in McAllen .  
November 24, 2016, at 09:21 AM by cialis - uwwrrwtt
Changed lines 1-233 from:
(:title Einbinden anderer Seiten:)
(:Summary: Einbinden des Inhaltes anderer Wikiseiten in die aktuelle Wikiseite:)
(:Original_Page: PmWiki.{$Name}:)
(:Translation_Date: 2011-05-08:)
(:Translation_Status: %green%fertig%%:)
(:Audience: Autoren (Fortgeschrittene):)

Die [@(:include:)@]-Direktive ermöglicht das Einbinden (oder die [[Wikipedia:Transclusion|"Transclusion"]]) des Inhaltes anderer Wikiseiten in die aktuelle Wikiseite. Alle der unten aufgeführten Direktiven fügen nur den reinen Wiki-(Quell-)-Text ein. Insbesondere werden alle Seiten-[[Links | Verweise]] der eingebundenen Seite auf die aktuelle [[WikiGroup | Gruppe]] der aktuellen Seite bezogen, wenn nichts anderes angegeben ist.

!!Syntax
Die grundlegende Syntax ist
* [@(:include SeitenName:)@]\\
  bindet die ganze Seite mit dem Seitennamen @@SeitenName@@ aus der gleichen Gruppe ein.
* [@{Gruppe.SeitenName$:[[#includestv|STV]]}@]\\
  fügt eine [[PmWikiDe/PageTextVariables|benannte Variable]] aus einer Seite ein, \
  [[WikiGroup|Gruppe]] und SeitenName sind Optionen.

Die vollständige Syntax ist
* [=(:=]include
  [[#includefullname|vollerName]]#[[#includeanchor|vonAnker]]#[[#includeanchor|bisAnker]] \
  [[#includelines|lines]]=''123'' \
  [[#includeself|self]]=''0''  \
  [[#includebasepage|basepage]]=''abc'' \
  [[#includevariable|variable]]=''Wert'' \
  :)
-> bindet eine Seite entsprechend der angegebenen Parameter ein. Parameter sind optional.
[[#firstanchor]]

!! Parameter
Die Direktive kann mehrere Namen-Parameter mit oder ohne Anker und mehrere [[#includevariable|Vorlagenvariablen]]-Parameter enthalten.

[[#includefullname]]
!!! Benannte Seiten
-< [@(:include SeitenName:)@]
-< [@(:include Gruppe.SeitenName:)@]
-< [@(:include Seite1 Seite2 Gruppe1.Seite3 Gruppe2.Seite4:)@]
-> Bindet den kompletten Text einer anderen Wikiseite in die aktuelle Seite ein. Mehrere Seiten dürfen angegeben werden, aber nur die erste gefundene Seite wird eingebunden.

[[#errormessage]]
Man kann das obige Feature nutzen, um eine Fehlermeldung anzuzeigen, wenn ein Einbinden scheitert. Man legt eine Seite an, z. B. @@Site.EinbindenGescheitert@@, die die Fehlermeldung enthält. In der Include-Direktive hängt man dann diese Seite an das Ende der Seitenliste an:
->[@(:include Seite1 Seite2 Seite3 Site.EinbindenGescheitert:)@]\\
Ein etwas komplexerer Ansatz wird in [[PmWiki:IncludeOtherPages-Talk|the talk page]] beschrieben (%red%englisch%%).
 
[[#includeanchor]]
!!! Anker
|| width=*
||[@(:include SeitenName#von#bis:)@] ||bindet Zeilen von ''`SeitenName'' zwischen den [@[[#von]]@]- und  [@[[#bis]]@]-[[Links#anchors|Ankern]] ein
||[@(:include SeitenName#von#:)@]    ||bindet alle Zeilen nach [@[[#von]]@] bis zum Seitenende ein
||[@(:include SeitenName##bis:)@]    ||bindet alle Zeilen vom Seitenanfang an bis [@[[#bis]]@] ein
||[@(:include SeitenName#von:)@]    ||bindet alles zwischen [@[[#von]]@] und dem nächsten Anker ein
||[@(:include SeitenName#:)@]        ||bindet alles vom Seitenanfang bis zum ersten Anker ein
-> %note% Anmerkung: Man darf kein Whitespace zwischen "#von" und "#bis" setzen

-> %note% Anmerkung: Text in der gleichen Zeile wie der schließende Anker, aber vor dem Anker, wird '''nicht''' mit im Text eingebunden, s. Beispiel unten:
--> [@[[#start]]Etwas Text in der ersten Zeile @]
--> [@Etwas Text in der letzten Zeile [[#ende]]@]
-> %note%Das Obige wird, wenn es mit [@(:include SeitenName#start:)@] eingebunden wird, nur den Text der ersten Zeile enthalten, nicht den Text der zweiten Zeile.

-< [@(:include Seite1 Seite2 #von#bis:)@]
-> bindet Zeilen von der ersten gefundenen Seite von Seite1, Seite2 zwischen dem [@[[#von]]@] und dem [@[[#bis]]@] ein 
-> %note% Anmerkung: Man setzt ein Whitespace zwischen "Seite2" und "#von#bis", die selben Anker "#von#bis" sollen für ''beide'' Seiten gelten.  Wenn die passenden Anker auf der zuerst gefundenen Seite von Seite1, Seite2 fehlen, wird der gesamte Inhalt der Seite eingebunden.
-> Das scheint in 2.2 betas nicht zu funktionieren. Siehe Cookbook:IncludeSection wegen einer Lösung.

-< [@(:include Seite1#von1#bis1 Seite2#von2#bis2:)@]
-> bindet die erste gefundene Seite von Seite1 (zwischen [@[[#von1]]@] und [@[[#bis1]]@]) oder Seite2 (zwischen [@[[#von2]]@] und [@[[#bis2]]@] ) ein.

-< %green%Bemerkung%%: Frühere Versionen von PmWiki erlaubten Whitespace zwischen  [@#von@]- und [@#bis@]-Ankern, obwohl es so nicht vorgesehen war. Neuere Versionen erlauben kein Whitespace mehr. Um das ausgenutze Fehlverhalten wieder zu reaktivieren, setzt man dies in ''config.php'' oder ''farmconfig.php'':

-> [@Markup('includeanchors', '<include', '/(\\(:include.*?#\\w+)\\s+(#\\w+)/', '$1$2');@]

[[#includelines]]
!!! Lines=
-< [@(:include SeitenName lines=10:)@]
-< [@(:include SeitenName lines=5..10:)@]
-< [@(:include SeitenName lines=5..:)@]
-> bindet die ersten 10 Zeilen, die Zeilen 5-10, oder Zeile 5 und alle folgenden von  ''`SeitenName'' ein.  Eine Zeile in diesem Kontext bezieht sich auf eine Zeile des Quelltextes. ''Also kann eine Zeile ein ganzer Absatz sein, der über mehrere Zeilen auf dem Bildschirm umbricht oder auch eine komplett leere Zeile.''

-< [@(:include Seite1 Seite2 Seite3 lines=1..5:)@]
-> bindet die ersten 5 Zeilen der zuerst gefundenen Seite unter den Seiten Seite1, Seite2 oder Seite3.  (Um Zeilen von einer Liste von Seiten einzubinden, muss man eine Direktive für jede Seite schreiben.)

[[#includeself]]
!!! Self=
-< [@(:include SeitenName self=0:)@]
-> Der Parameter @@self@@ kann @@0@@ oder @@1@@ sein. Er gibt der Include-Direktive an, ob es erlaubt ist, die aktuelle Seite einzubinden. Das ist nützlich, wenn @@SeitenName@@ ein Variablenverweis wie [@{$Name}@] ist und man verhindern will, dass die aktuelle Seite eingebunden wird.

[[#includestv]]
!!! [[Page text variables|+]]
-< [@{Gruppe/SeitenName$:STVar}@]
-> fügt den Wert aus einer Definitionsliste einer (optionalen oder der aktuellen) Seite ein. Die Werte sind definiert unter Benutzung einer Definitionsliste ([@:Ding:Beschreibung@]), einfacher Doppelpunkttrenner ([@Ding:Beschreibung@]) oder spezieller Markups ([@(:Ding:Beschreibung:)@]).

[[#includebasepage]]
!!!  Basepage=

-< [@(:include SeitenName basepage=BasisSeitenName:)@]
-> bindet SeitenName ein, aber behandelt alle relativen Verweise und Seitenvariablen, in  ''SeitenName`'' als relative zu ''BasisSeitenName''.
Wenn @@basepage=@@ übergeben wird, werden alle relativen Verweise und alle Seitenvariablen relativ zur 'basepage' interpretiert.
Wenn also jemand die Seite [@VorlagenName@] anlegt mit
-> [@Name: {$:Name}
Addresse: {$:Addresse},@]
wird die Direktive
-> [@(:include VorlagenName basepage=SeitenName:)@]
den Inhalt von [@VorlagenName@] holen, dabei aber alle Seitenvariablen und Verweise als relativ zu [@SeitenName@] behandeln.
Insbesondere werden die Werte von [@{$:Name}@] und [@{$:Addresse}@] von [@SeitenName@] geholt, auch Dinge wie [@{$Title}@] und [@{$LastModifiedBy}@] würden hier funktionieren.

!!!! Einsatz von Basepage
Die vornehmliche Aufgabe von Basepage ist, das Einbinden von Seiten auf eine Weise zu erlauben, die das Verhalten von 2.1.x nachahmt, wo Seitenvariablen und Links relativ zur aktuellen Seite interpretiert wurden.
Das macht man mit:
-> [@(:include SomeOtherPage basepage='' :)@]
  -oder-
-> [@(:include SomeOtherPage basepage={*$FullName} :)@]

Das erlaubt auch [=GroupHeadern und GroupFootern=], ihre Seitenvariablen relativ zur (umrahmten) aktuellen Seite zu sehen (anstatt relativ zum [=GroupHeader oder GroupFooter=]):
>>pre<<
    ## PmWikis Standard-$GroupHeaderFmt-Einstellung
    $GroupHeaderFmt =
        [='(:include {$Group}.GroupHeader self=0 basepage={*$FullName}:)(:nl:)';=]
>><<

Andernfalls würde der Einsatz von [@{$Name}@] innerhalb eines [=GroupHeaders=] eben '[=GroupHeader=]' anzeigen und nicht den Namen der aktuellen Seite.

Der  @@basepage=@@-Parameter ist generell genug, dass er auch als Vorlagen-Maschine benutzt werden kann,
sodass wir eine Vorlagenseite hernehmen können, die Variablen enthält, welche dann mit den Werten aus einer anderen Seite gefüllt werden:
->[@(:include VorlagenSeite basepage=DatenSeite :)@]

Und natürlich kann eine einzelne Vorlagenseite mehrere Vorlagen, begrenzt durch Anker, enthalten, so dass wir am Ende bei einer Syntax landen, die der von Seitenlistenvorlagen auf unheimliche Weise'^[[#footnote|#]]^'  ähnlich ist:
>>pre<<
    [@(:include VorlagenSeite#abc basepage=DatenSeite :)@]
    (:include VorlagenSeite#def basepage=DatenSeite :)
    (:include VorlagenSeite#xyz basepage=DatenSeite :)
>><<

Passend dazu kann [=VorlagenSeite=] eine Syntax wie diese benutzen:
>>pre<<
    [@
    [[#abc]]
    ... hier der Vorlagenkrimskrams ...
    [[#abcend]]
    @]
>><<

und es ist möglich die [=VorlagenSeite=] als Vorlage zu nutzen, ohne dass sie insgesamt angezeigt wird &mdash; gerade so wie wir es bei [[Site.PageListTemplates]] machen.

-< [[#footnote]] [- '^[1]^'Okay, vielleicht ist's doch nicht so unheimlich, wenn man weiß, dass der Seitenlistenvorlagen-Kode tatsächlich die gleiche Funktion nutzt wie (:include:), um seine Vorlagen zu holen. Aber es bleibt eine nützlich Parallele. -]

[[#includevariable]]
!!! Angabe von Variablen als Parameter
Man kann auch Variablenwerte in der IncludeDirektive angeben und Bezüge zu den Variablen der Vorlage herstellen mit dem Format:
-> [@(:include VorlagenSeite variable1="value" variable2="value2":)@]

Das setzt voraus, das eine Site $EnableRelativePageVars aktiviert hat, was seit PmWiki 2.2.0 angeraten wird &mdash; es war aber nicht Standard in Version 2.2.8 und früheren wegen der Kompatibilität mit Versionen 1.x.x.

Man könnte Zum Beispiel auf meiner Einfügeseite folgendes haben:

(:markup class=horiz:)
[[#ivars]]
Hi, {$$Name}, how are you today?
[[#ivarsend]]
(:markupend:)

Wenn man dann den obigen Abschnitt einfügt (der Abschnitt ist erreichbar durch den Abschnitt @@[@{$FullName}#ivars)@]@@), ergibt sich dieses Verhalten:

(:markup class=horiz:)
(:include {$FullName}#ivars Name=Sam:)
(:markupend:)

Wenn ein Wert Leerzeichen enthält, gehört er in Anführungszeichen.

(:markup class=horiz:)
(:include {$FullName}#ivars Name="mein Freund":)
(:markupend:)

''Siehe auch  $EnableUndefinedTemplateVars.''

!!!Besondere Anweisungen
[@(:nl:)@] wirkt wie einZeilenvorschub im ''Quelltext'', wenn an der Stelle noch keiner war.

Der Zweck von [@(:nl:)@] ist, Konstruktionen wie "[@(:include Page1:)(:nl:)(:include Page2:)@]" zu ermöglichen und dabei sicherzustellen, dass die erste Zeile von Page2 getrennt von der letzten Zeile in Page1 behandelt wird, ohne dabei eine unerwünschte Leerzeile zu erzeugen.

Mehr Informationen in [[http://thread.gmane.org/gmane.comp.web.wiki.pmwiki.user/15031/focus=15079 | dieser Diskussion]] und [[http://thread.gmane.org/gmane.comp.web.wiki.pmwiki.user/58609/focus=58633/|dieser Diskussion]] (englisch).

[@(:nl:)@] ist nicht vorgesehen, einen Zeilenvorschub in der Ausgabe zu erzeugen!

!! Siehe auch
* [[PmWikiDe/Page text variables|+]] {PmWikiDe/PageTextVariables$:Summary}
* [[Cookbook:IncludeUrl]] {Cookbook.IncludeUrl$:Summary}

!! Bemerkung zum Stil
Im Standard können eingebundene Seiten oder Zeilen nicht vom anderen Text unterschieden werden.
Um einen visuellen Hinweis darauf zu geben, dass dieser Text besonders ist, kann man [[PmWikiDe/Wiki Styles]] anwenden. Zum Beispiel:

(:markup:)
%define=leftborder border-left="2px solid #88f" margin-left="2px" padding="1px 0 3px 10px"%
Was ist PmWiki?
>>leftborder<< (:include PmWikiDe.PmWiki lines=1..9:)
>><<
''Einen schönen Tag noch!''
(:markupend:)

!!! Parameterbezüge

Alle an eine Include-Direktive übergebenen Parameter (ob es nun Schlüsselwörter sind oder nicht) sind von innerhalb der eingebunden Seite erreichbar als eine besondere [@{$$...}@]-Variable gleichen Namens. Dieses Feature kann ausgenutzt werden, um Extrainformationen zu liefern, wenn die eingebundene Seite angezeigt wird.

!!! Anmerkung
* man kann auch [@(:include Meine/Seite#meinAnker lines=4:)@] schreiben, womit vier Zeilen, beginnend mit und einschließlich der Zeile mit dem Anker [@[[#meinAnker]]@], eingebunden werden.

!! Anmerkungen zum Einsatz von [[conditional markup|bedingten Auszeichnungen]]

Die [@(:include:)@]-Direktive wird erst ausgeführt, nachdem bedingte Textauszeichnungen ausgewertet wurden.\\
Deshalb kann man eine Seite als Teil einer Bedingung einbinden:
->[@(:if eine Bedingung:)(:include EineSeite#abschnitt:)(:if:) @]
Aber [@(:include EineSeite#abschnitt:)@] prüft nicht, ob [@[[#abschnitt]]@] selbst Teil einer bedingten Textauszeichnung wie
->[@(:if eine Bedingung:)[[#abschnitt]]...[[#abschnittend]](:ifend:)@]
ist. [@(:include EineSeite#abschnitt:)@] ignoriert eine solche Bedingung. 

Wenn man in eingebundenen Seiten [[Conditional Markup|Variablen testet]], kann der Kontext (Quelle oder Ziel) nützlich sein.
Siehe [[PmWikiDe/PageVariables#specialreferences|Spezielle Verweise]] wegen der Details.

----

>>faq<< [[#faq]]

Q: [[#maxincludes]] Wieviele Include-Direktiven kann es höchstens in einer Seite geben.
->Meine Site scheint nach 48 Einbindungen aufzuhören. ($MaxIncludes)

A: Im Standard limitiert PmWiki die Zahl der Include-Direktiven für eine Seite auf 50, um unendliche Schleifen zu verhindern &mdash; auch andere Situationen, die die Recourcen des Servers aufessen könnten. Zwei der eingebundenen Seiten sind GroupHeader und GroupFooter, bleiben noch die 48. Die Grenze kann von einem Wiki-Administrator über die Variable $MaxIncludes hochgesetzt werden.

Q: Gibt es eine Möglichkeit, Einbindungen aus einer Gruppe von Seiten zu machen, ohne exakte Namen anzugeben, z. B. zwischen Anker X und Y von allen Seiten namens IFClass-* ?
A: Das kann man mit [[page lists]] erreichen.

Q: Es scheint ein Problem mit der Anzeige zu geben, wenn eine Seite die [=(:title:)=]-Direktive enthält.
A: In der Standard-Installation überschreibt der '''letzte''' Titel in der Seite alle vorangegangenen Direktiven. Man kann seine [=(:title :)=]-Directive an das Ende der Seite setzen, nach allen Include-Direktiven, siehe auch $EnablePageTitlePriority.
[[#faqend]]
>><<
to:
Viagra, four for http://c9superactive.com/ ,  and one for Levitra, said spokeswoman Susan Cruzan.