PmWiki kommt mit zwei Direktiven zum Erzeugen von Seitenlisten — (:pagelist:)
und (:searchresults:)
. Beide Direktiven sind im Grunde das Gleiche und jede nimmt die unten beschriebenen Parameter entgegen. Der eigentliche Unterschied ist, dass (:searchresults:)
die Nachrichten "Suche nach ..." und "### Treffer auf insgesamt ### durchsuchten Seiten" um das Ergebnis erzeugt.
Die (:searchbox:)
-Direktive erzeugt ein Such-Formular (Texteingabefeld), um die Suche anzustoßen. Das Markup nimmt die gleichen Parameter wie (:pagelist:)
entgegen, wodurch es möglich ist, das Suchergebnis in gleicher Weise einzuschränken, zu sortieren und zu formatieren wie es unten für (:pagelist:)
beschrieben ist. Für weitere Informationen über die (:searchbox:)
-Direktive und die Art, wie sie sich von (:pagelist:)
unterscheidet, springe vor zum Abschnitt Searchbox.
(:pagelist:)
ohne irgendein Argument zeigt eine unnummerierte Liste aller Seiten als Links, alphabetisch und in Gruppen geordnet.
(:pagelist group=ab name=cd fmt=template list=ef order=gh count=123 link=ij trail=kl wrap=mn passwd=op if=qr $:stv=st $sv=uv cache=0 argument1 -argument2 etc variable=value class=class :)
(:searchbox value=abc size=99 target=def:)
(:searchresults request=1 req=1 :)
Alle Argumente, die in (:pagelist:)
auftauchen und nicht von der Form 'Schlüssel=Wert' sind, werden als Text behandelt, der im Seitentext vorkommen muss (oder nicht darf).
Das Minus-Zeichen (-) kann benutzt werden um anzuzeigen, dass Dinge ausgeschlossen werden sollen. So listet
(:pagelist trail=PmWiki.DocumentationIndex list=normal Apfel -Strudel:)
alle "normalen" Seiten im Dokumentations-Index auf, die "Apfel" aber nicht "Strudel" enthalten.
In der englischen Dokumentation wird die Abkürzung PTV (page text variable) benutzt.
Man kann auch Seiten-Text-Variablen als Schlüssel benutzen, um Seiten gemäß der Existenz von Seiten-Text-Variablen aufzulisten.
(:pagelist $:seitentextvar=einwert:)
listet alle Seiten auf, in denen $:seitentextvar auf einwert gesetzt ist.
Minuszeichen (-), Joker (?*) und kommagetrennte Listen von Werten funktionieren auch, wenn eine Auswahl auf Seiten-Text-Variablen beruht.
Z. B. listet
(:pagelist $:eineseitentextvar=t*,-test:)
alle Seiten auf, deren Variable $:eineseitentextvar auf 't*' passt, aber nicht 'test' ist.
Beispiele:
STV ist gesetzt (ist nicht leer): | (:pagelist $:MeineSeitenTextVariable=- :) |
STV ist leer oder nicht gesetzt: (d. h. ist nicht gesetzt auf ein Zeichen, gefolgt von 0 oder mehr Zeichen) | (:pagelist $:MeineSeitenTextVariable=-?* :) |
STV ist nicht WERT: | (:pagelist $:MeineSeitenTextVariable=-WERT :) |
STV ist gesetzt und nicht JA: | (:pagelist $:MeineSeitenTextVariable=?*,-JA:) |
Seien Sie auf der Hut, wenn Sie (:pagelist $:MySTV=$:YourSTV :)
benutzen, Seiten-Text-Variablen enthalten Formatierungen, Sie könnten nicht die Treffer erhalten, die Sie eigentlich erwartet haben. Momentan ist der einzige Weg, darum herum zu kommen, der Gebrauch von Jokern; wenn Formatstrings enthalten sind, könnten Sie sich vom Glück verlassen fühlen.
In der englischen Dokumentation wird die Abkürzung PV (page variable) benutzt.
Seiten-Variablen können in Seitenlisten auf die gleiche Weise benutzt werden wie Seiten-Text-Variablen. Siehe oben für weitere Einzelheiten. Man benutzt einfach $var statt $:var.
Die "group=
"- und "name=
"-Parameter begrenzen das Ergebnis auf Seiten in einer bestimmten Gruppe oder mit einem bestimmten Namen:
Alle Seiten der PmWikiDe-Gruppe: | (:pagelist group=PmWikiDe :)
|
Alle Seiten außer denen der PmWikiDe- oder Site-Gruppe: | (:pagelist group=-PmWikiDe,-Site :)
|
Alle RecentChanges-Seiten | (:pagelist name=RecentChanges :)
|
Alle Seiten außer RecentChanges | (:pagelist name=-RecentChanges :)
|
Namen- und Gruppenparameter können Joker-Zeichen enthalten, die nur Seiten zeigen, die auf das Muster passen:
Beispiele:
Alle Seiten in allen Gruppen, die mit "PmWiki" beginnen: | (:pagelist group=PmWiki* :)
|
Alle Seiten in allen Gruppen, die mit "PmWiki" beginnen außer chinesische: | (:pagelist group=PmWiki*,-PmWikiZh :)
|
Alle Seiten in der PmCal-Gruppe, deren Name mit "2005" beginnt: | (:pagelist name=PmCal.2005* :)
|
Alle Kochbücher, deren Name mit einem A oder einem B beginnen:
Beachten Sie die verschiedenen Separatoren, die zum gleichen Ergebnis führen.
| (:pagelist group=Cookbook name=A*,B* :) (:pagelist group=Cookbook name="A* B*" :) (:pagelist group=Cookbook name=[AB]* :) (:pagelist group=Cookbook, name=[AB]* :) |
Wenn Sie mehrfache Bedingungen in name benutzen wollen, müssen Sie Anführungszeichen als Stringbegrenzer oder Kommata ohne Leerzeichen als Trenner einsetzen.
Die "trail=
"-Option besorgt sich die Liste der anzuzeigenden Seiten aus einem WikiTrail:
(:pagelist trail=PmWiki.DocumentationIndex order=-time:)
(:pagelist trail=RecentChanges count=5:)
Die "list=
"-Option erlaubt einer Suche, Seiten ein- oder auszuschließen bezüglich vom Administrator vordefinierter Muster
list=normal
" ist vordefiniert und schließt Seiten wie AllRecentChanges, RecentChanges, GroupHeader, GroupFooter, GroupAttributes, und Ähnliches von der angezeigten Ergebnisliste aus. Beachten Sie, dass list=normal
auch die aktuelle Seite ausschließt.
list=all
" überschreibt einen Standard, den der Administrator gesetzt haben könnte, um Gruppen wie PmWiki oder Site von den gewöhnlichen Suchergebnissen auszuschließen.
$SearchPatterns
definieren (siehe Cookbook:SearchResults).
Die "fmt=
"-Option bestimmt, wie das Ergebnis angezeigt wird. PmWiki definiert mehrere Formate vor:
fmt=#bygroup
- Zeige Seiten innerhalb der Gruppen an (Standardformat).
fmt=#simple
- Zeige eine einfachgeordnete Listevon Seiten an in der Form Gruppe.Name.
fmt=#title
- Zeige in der Liste die Seitentitel statt der Namen an. Um die Liste auch nach den Titeln zu sortieren, muss "order=title
" hinzugefügt werden, der Standard ist eine Sortierung nach dem Seitennamen.
fmt=#group
- Zeige eine Liste von Wikigruppen (ohne die Seiten in den Gruppen).
fmt=#include
- Zeige den Inhalt jeder Seiten in der Liste an (Beachten Sie, das kann sehr lange dauern für eine laaaange Liste!).
Diese Formate werden definiert in Seitenlistenvorlagen, die angepasst werden können (Siehe auch Seitenlisten mit Standardvorlagen).
Dies Format ist nicht in der Seitenlistenvorlage definiert:
fmt=count
- Zeige die Anzahl der Seiten in der Liste an (Beachten Sie das Fehlen des '#')
Die "link=
"-Option implementiert Rückverweise — d. h. sie liefert eine Liste von Seiten, die auf die Zielseite verweisen. Das ist insbesondere nützlich für Kategorien und zum Finden zugehöriger Seiten.
(:pagelist link=PmWikiDe.DocumentationIndex:)
(:pagelist link={$FullName}:)
(:pagelist link=Category.Skins:)
Beachte, dass die "link=
"-Option weder negative Ziele, noch mehrere Ziele noch Joker-Zeichen entgegen nimmt. Siehe hierfür Cookbook:PageListMultiTargets.
Die "count=
"-Option bietet die Möglichkeit,
Eine einfache, unnummerierte Liste der zehn zuletzt geänderten Seiten: |
|
Zeige die ersten zehn Seiten einer Liste an: |
count=10 # Zeige die ersten zehn Seiten an |
Negative Zahlen zählen die Seiten vom Ende der Liste aus: |
count=-10 # Zeige die letzten zehn Seiten an |
Bereiche können mit '..' angegeben werden, so wie hier: |
count=1..10 # die ersten zehn Seiten count=5..10 # 5. bis 10. Seite |
Negative Zahlen in Bereichen zählen von Ende der Liste aus: |
count=-10..-5 # 10. von hinten, 9. von hinten, ..., 5. von hinten |
Lässt man den Start oder das Ende des Bereiches weg, wird dafür der Start oder das Ende der Liste gesetzt: |
count=10.. # überspringe die ersten zehn Seiten count=..10 # 1. bis 10. Seite count=-10.. # die letzten zehn Seiten count=..-10 # Alle bis auf die letzten neun Seiten |
Bereiche können umgedreht werden, um anzuzeigen, dass die Reihenfolge der Seiten in der Ausgabe ebenso umgedreht werden sollen: |
count=5..10 # 5. bis 10. Seite count=10..5 # das gleiche rückwärts count=-1..1 # Alle Seiten von hinten nach vorn aufgelistet |
"Rückwärts zählen" hier bezieht sich auf die Liste nach der Sortierung, deshalb sind die drei Anweisungen rechts äquivalent: |
(:pagelist order=-name count=10:) (:pagelist order=-name count=1..10:) (:pagelist order=name count=-1..-10:) |
Vergleiche fmt=count
Die "wrap
"-Option hat die Werte none und inline.
Mit "wrap=inline" und "wrap=none" wird die Ausgabe der Seitenliste (Markup oder HTML) direkt im Markup der Seite eingebettet ohne irgendwelche umgebenden <div class=...> - </div>-Tags.
Mit "wrap=inline" wird eine umgebende <ul> fortgesetzt. Ohne "wrap=inline" startet die HTML-Ausgabe eine neue <ul> (nicht umgekehrt?). Das ist wichtig, wenn man möchte, dass die Seitenliste eine zweite Ebene in der <ul> erzeugt, denn der Beginn einer neuen Liste mit "**" führt nicht zu einer zweiten <ul>-Ebene sondern zu <dl><dd><ul>...
"wrap=inline" hat außerdem noch andere Effekte, da es den Aufruf von $FPLTemplateMarkupFunction unterdrückt (die standardmäßig Markup→HTML umwandelt).
Standardmäßig hat eine Seitenliste die 'fpltemplate'-Klasse. Die 'bygroup'-, 'simple'-, 'group'- und 'title'-Seitenlistenformate haben eigene Klassennamen fplbygroup, fplsimple etc. Man kann selbst eine Klasse mit dem class=-Parameter angeben oder durch setzen des $FPLFormatOpt-Arrays.
Mit (:pagelist [andere Parameter] request=1:)
können Sie die meisten Seitenlisten-Parameter überschreiben, indem Sie die Parameter in den URL einfügen.
Beispiele:
(:pagelist order=name request=1:)
sortiert normalerweise die Liste nach Namen. Wenn aber der URL der Seite ?order=time
enthält, wird die Liste nach der Zeit sortiert.
?order=
, bleibt die Liste unsortiert.
Der req=1
-Parameter bewirkt, dass die Seitenliste nur erzeugt wird, wenn die Suchbegriffe übertragen werden (das heißt, wenn der Benutzer "Suchen" im Suchendialog angeklickt hat).
Beachten Sie, dass (:pagelist request=1 req=1:)
fast wie (:searchresults:)
funktioniert, aber ohne die Zeilen "Suche nach ..." und "X Treffer aus insgesamt Y durchsuchten Seiten.". Beide Parameter "request=1" and "req=1" sind nötig.
Die "passwd
"-Option liefert nur jene Seiten zurück, die eins der Passwortattribute gesetzt haben (passwd=*
), egal welchen Wert man angibt. Nur ohne Wert funktioniert es nicht.
Die "if
"-Option erlaubt Bedingungen für die Erzeugung von Seitenlisten zu setzen, statt dies in den Seitenlistenvorlagen zu tun. Nur die Seiten, für die die Bedingung wahr ist, werden ausgeliefert. Alles, was in einem (:if ...:)
funktioniert, kann als Bedingung genommen werden. Zum Beispiel liefert
(:pagelist if="date {(ftime %GW%V {*$Name})} {=$Name}" :)
alle Seiten aus, deren Namen in der gleiche Woche liegt wie der Name der aktuellen Seite (also der Seite, in die die Liste eingebettet ist).
Wenn ein Argument innerhalb der Anführungszeichen Leerzeichen enthalten kann, muss es in Anführungszeichen gesetzt werden.
(:pagelist if="date 2009-01-01..2009-12-31 '{=$:Mydate}'" :)
Die "order=
"-Option erlaubt es, die gelisteten Seiten nach unterschiedlichen Kriterien zu sortieren. Mit einem Minuszeichen erreicht man eine umgedrehte Sortierreihenfolge. Mehrfache Sortierkriterien können durch Kommata getrennt angegeben werden. Außerdem kann man seine eigenen Sortierreihenfolgen erzeugen:
order=name
- alphabetisch nach Namen (Standardreihenfolge)
order=title
- alphabetisch nach Titeln statt nach Namen
order=time
- zuletzt geänderte Seiten am Ende
order=ctime
- Erstellungszeit (siehe Anmerkung)
order=size
- Seitengröße (nicht Dateigröße), kleinste Seite zuerst (-size scheint nicht zu gehen)
order=group,title
- mehrfache Kriterien, in diesem Fall sortiert nach Titeln innerhalb sortierter Gruppen
order=random
- verwürfle die Seiten in eine zufällige Reihenfolge
order=$:pagetextvarname
- alphabetisch nach Seiten-Text-Variablen-Werten
order=$pagevarname
- alphabetisch nach Seiten-Variablen-Werten
Außerdem erlaubt die order=
-Option angepasste Ordnungsfunkionen zu schreiben.
Seitenlisten können zwischengespeichert werden, was den Prozess erheblich beschleunigt (wenn $PageListCacheDir gesetzt ist). Hin und wieder führt dieses Zwischenspeichern zu unerwünschten Ergebnissen, die Angabe von cache=0
schaltet das Zwischenspeichern ab.
Man kann auch Variablen innerhalb der Seitenlistenanweisung angeben und sich in der Vorlage auf diese Variablen beziehen, indem man das {$$variable1}
-Format benutzt.
(:pagelist fmt=#pagelist variable1="value" variable2="value2":)
Das setzt voraus, dass die Site $EnableRelativePageVars
gesetzt hat, was in PmWiki 2.2.0 empfohlen wird — aber standardmäßig ausgeschaltet ist, um ein Upgraden von 2.1.x zu erleichtern.
Zum Beispiel mit der Vorlage
>>comment<< [[#tvars]] (:template default count=1 ParamName=Simon:) Hi, {$$ParamName}, how are you today? [[#tvarsend]] >><< |
erhält man:
(:pagelist fmt=#tvars ParamName="Sam":) (:pagelist fmt=#tvars ParamName="Sally":) (:pagelist fmt=#tvars:) | Hi, Sam, how are you today? Hi, Sally, how are you today? Hi, Simon, how are you today? |
Siehe auch $EnableUndefinedTemplateVars
.
Schließe den Inhalt einer zufälligen Seite aus der Bannergruppe ein:
(:pagelist group=Banners order=random count=1 fmt=#include list=normal:)
Zeige eine einfache Liste der zehn zuletzt geänderten Dateien an:
(:pagelist trail=Site.AllRecentChanges count=10 fmt=#simple:)
Zeige die "Top Twenty" der größten Kochbuch-Seiten
(:pagelist group=Cookbook order=size count=-20 :)
Die (:searchbox:)
-Direktive nimmt generell die gleichen Parameter wie die (:pagelist:)
- und (:input text:)
-Direktiven an:
value='suchstring'
sein. Dieser Suchstring erscheint im Eingabefeld und kann für die (vor der) Suche verändert werden.
size
-Parameter angegeben werden, wobei size=40
der aktuelle Standard ist.
value=''
) im Markup verhindern, dass sich ein Suchstring auf alle Searchboxen ausbreitet.
target=GruppenName.SeitenName
setzen. Der Standard ist die aktuelle Seite.
(:searchbox:)
ignoriert und der Inhalt der $SearchBoxFmt-Variablen wird statt dessen benutzt.
Die (:searchresults:)
-Direktive nimmt generell die gleichen Parameter wie die (:pagelist:)
- und (:input text:)
-Direktiven an.
Die Suchergebnisse erscheinen ohne die Einleitung, die da heißt "Suche nach ..." .
Um die Texte, die das Suchergebnis umrahmen, zu ändern, kann man das Folgende anpassen und zur local/config.php oder zur $FarmD
/local/farmconfig.php hinzufügen.
XLSDV('de', array( 'SearchFor' => 'Suchergebnis für <em>$Needle</em>:', 'SearchFound' => '$MatchCount Seiten gefunden unter $MatchSearched durchsuchten Seiten.' ));
Alternativ kann man auch die 'SearchFor'- und 'SearchFound'-Strings in der Übersetzungsseite anpassen.
Auch die $SearchResultsFmt-Variable kann in local/config.php oder $FarmD
/local/farmconfig.php gesetzt werden.
SDV($SearchResultsFmt, "<div class='wikisearch'>\$[SearchFor] <div class='vspace'></div>\$MatchList <div class='vspace'></div>\$[SearchFound]</div>");
fmt=
-Option
(:input text:)
-Markups, die für (:searchbox:)
bereitgestellt werden
Übersetzung von PmWiki.PageLists
Originalseite auf PmWikiDe.PageLists - Rückverweise
Zuletzt geändert:
PmWikiDe.PageLists am 31.08.2013
PmWiki.PageLists am 27.06.2013