Englisch: HomePage |
PmWikiDe /
Einbinden anderer Seiten
Autoren (Fortgeschrittene)
Die SyntaxDie grundlegende Syntax ist
Die vollständige Syntax ist bindet eine Seite entsprechend der angegebenen Parameter ein. Parameter sind optional.
ParameterDie Direktive kann mehrere Namen-Parameter mit oder ohne Anker und mehrere Vorlagenvariablen-Parameter enthalten. 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.
Sie können das obige Verhalten nutzen, um eine Fehlermeldung anzuzeigen, wenn ein Einbinden scheitert. Legen Sie eine Seite an, z. B. Ein etwas komplexerer Ansatz wird in der 'talk'-Seite beschrieben (auf englisch). #von#bis-Anker
Anmerkung: Setzen Sie kein Whitespace zwischen "#von" und "#bis".
Anmerkung: Text in der gleichen Zeile wie der schließende Anker, aber vor dem schließenden Anker, wird nicht mit im Text eingebunden, s. Beispiel hierunter:
[[#start]]Etwas Text in der ersten Zeile.
Etwas Text in der letzten Zeile. [[#ende]]
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
Anmerkung: Setzen Sie 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.
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, setzen Sie dies in config.php oder farmconfig.php:
Markup('includeanchors', '<include', '/(\\(:include.*?#\\w+)\\s+(#\\w+)/', '$1$2');
Lines=von..bis(: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, schreiben Sie eine Direktive für jede Seite.)
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 Sie verhindern wollen, dass die aktuelle Seite eingebunden wird.
Seiten-Text-Variablen{Gruppe/SeitenName$:STVar}
fügt den Wert aus einer Definitionsliste einer (optionalen oder der aktuellen) Seite ein. Die Werte sind definiert unter Benutzung
Basepage=(:include SeitenName basepage=BasisSeitenName:)
bindet SeitenName ein, aber behandelt alle relativen Verweise und Seitenvariablen in SeitenName als relative zu BasisSeitenName.
Wenn Name: {$:Name} Addresse: {$:Addresse}, wird die Direktive (:include VorlagenName basepage=SeitenName:)
den Inhalt von Einsatz von BasepageDie 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 machen Sie mit: (:include SomeOtherPage basepage='' :)
-oder- (:include SomeOtherPage basepage={*$FullName} :)
Das erlaubt auch GroupHeader und GroupFooter, ihre Seitenvariablen relativ zur (umrahmten) aktuellen Seite zu sehen (anstatt relativ zum GroupHeader oder GroupFooter): ## PmWikis Standard-$GroupHeaderFmt-Einstellung $GroupHeaderFmt = '(:include {$Group}.GroupHeader self=0 basepage={*$FullName}:)(:nl:)'; Andernfalls würde der Einsatz von Der (: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[1] ähnlich ist: Passend dazu kann VorlagenSeite eine Syntax wie diese benutzen: [[#abc]] ... hier der Vorlagenkrimskrams ... [[#abcend]] und es ist möglich die VorlagenSeite als Vorlage zu nutzen, ohne dass sie insgesamt angezeigt wird – gerade so wie wir es bei Site.PageListTemplates machen. [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.
Angabe von Variablen als Parameter: Nutze Abschnitte als VorlageMan kann auch Variablenwerte in der Include-Direktive angeben und Bezüge zu den Variablen der Vorlage herstellen mit dem (:include VorlagenSeite variable1="wert1" variable2="wert2":)
Das setzt voraus, dass eine Site $EnableRelativePageVars aktiviert hat, was seit PmWiki 2.2.0 angeraten wird – es war aber nicht Standard in Version 2.2.8 und früheren wegen der Kompatibilität mit Versionen 1.x.x. Ich könnte zum Beispiel auf meiner Einfügeseite Folgendes haben:
Wenn man dann den obigen Abschnitt einfügt (der Abschnitt ist erreichbar durch den Abschnitt
Wenn ein Wert Leerzeichen enthält, gehört er in Anführungszeichen.
Siehe auch $EnableUndefinedTemplateVars. Eine besondere Anweisung
Der Zweck von Mehr Informationen in dieser Diskussion und dieser Diskussion (englisch).
ParameterbezügeAlle an eine Include-Direktive übergebenen Parameter (ob es nun Schlüsselwörter sind oder nicht) sind innerhalb der eingebunden Seite erreichbar als eine besondere Anmerkungen
Anmerkung zum StilIm 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 Wiki Styles anwenden. Zum Beispiel:
Anmerkungen zum Einsatz von bedingten AuszeichnungenDie (:if eine Bedingung:)(:include EineSeite#abschnitt:)(:if:)
Aber (:if eine Bedingung:)[[#abschnitt]]...[[#abschnittend]](:ifend:)
ist. Wenn man in eingebundenen Seiten Variablen testet, kann der Kontext (Quelle oder Ziel) nützlich sein. Siehe Spezielle Verweise wegen der Details. Siehe auch
FAQWieviele Include-Direktiven kann es höchstens in einer Seite geben. Meine Site scheint nach 48 Einbindungen aufzuhören. ($MaxIncludes)
Im Standard limitiert PmWiki die Zahl der Include-Direktiven für eine Seite auf 50, um unendliche Schleifen zu verhindern – 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. 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-* ? Das kann man mit Seitenlisten erreichen. Es scheint ein Problem mit der Anzeige zu geben, wenn eine Seite die (:title:)-Direktive enthält. In der Standard-Installation überschreibt der letzte Titel in der Seite alle vorangegangenen Direktiven. Man kann seine Welchen Test mache ich, um zu sehen, ob die Seite ein Teil einer anderen Seite ist?
Gibt es irgendeinen Weg, (Kapitel von) Seiten, die geschützt sind (authuser.php), woanders einzubinden. Sie können Ihr Ziel andersherum erreichen: setzen Sie die öffentlichen Abschnitte in eine öffentliche Seite (passwdread=@nopass or @_site_read) und binden Sie diese Abschnitte sowohl in die geschützte Seite als auch in die ungeschützte Seite ein. Beachten Sie, dass es nachdrücklich empfohlen wird, NICHT zu versuchen, in einer ungeschützten Seite sensitive Inhalte innerhalb einer bedingten Auszeichnung zu verbergen.
Übersetzung von PmWiki.IncludeOtherPages, Originalseite auf PmWikiDe.IncludeOtherPages — Backlinks
|