PmWikiDe

Seitenlisten

für die Liste aller Seiten

Autoren (Fortgeschrittene) und Administratoren

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 aus insgesamt ### durchsuchten Seiten" um das Ergebnis erzeugt.

Die (:searchbox:)-Direktive erzeugt ein Such-Formular (input text search box) zum Eintragen der Suchanfragen. 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, können Sie vorspringen zum Abschnitt Die Searchbox-Direktive.

Grundlegende Syntax

zeigt eine Liste gemäß der übergebenen Parameter an. Parameter sind optional.

Parameter

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.

Mit Seiten-Text-Variablen (STV)

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.

Bemerkung: Beachten Sie, dass Pagelist keine Formatierungsanweisungen im Ausdruck auswertet, wenn mit STVs gearbeitet wird. Wenn also Ihre Seiten-Text-Variablen definiert sind, um damit den Wert zu setzen, wird Pagelist eher den wörtlichen Wert des Textes in Ihrem Ausdruck sehen als das Ergebnis Ihres Ausdrucks. Beispielsweise wird die STV-Definition (:foo:{(substr abcdef 2 4)}:) als eine öffnende geschweifte Klammer, gefolgt von einer öffnenden runden Klammer, gefolgt von s-u-b-s-t-r etc. angesehen, anstatt als b-c-d-e. Jedwede Auswertung des Ausdrucks in der Ausgabe Ihrer Seitenliste passiert in nachfolgenden Regeln (nach Pagelist) im Zusammenhang mit der aktuellen Seite und so können diese Werte nicht zum Sortieren oder Auswählen von Seiten genutzt werden. (Quelle)

Mit Seiten-Variablen (SV)

In der englischen Dokumentation wird die Abkürzung PV (page variable) benutzt.

Seitenspezifische 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.

group= und name=

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 :)

Joker

Namen-, Gruppen-, Verweis- und Kategorie-Parameter können Joker-Zeichen enthalten, die nur Seiten zeigen, die auf ein gegebenes Muster passen:

  • Ein Stern (*) steht für null oder mehr Zeichen.
  • Ein Fragezeichen (?) steht für genau ein Zeichen.
  • Ein Satz von Zeichen, die in eckigen Klammern ([]) eingefasst sind, repräsentieren jedes der Zeichen in den Klammern (einzeln), aber kein anderes.
  • Ein Komma trennt verschiedene Bezeichner, von denen wenigstens einer passen soll.
  • Ein Minuszeichen vor einem Bezeichner erfordert, dass er fehlt.
  • Nur für link= and category= gilt, dass ein Pluszeichen vor einem Bezeichner erfordert, dass er vorhanden ist.

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 Bezeichner, die zum gleichen Ergebnis führen.
(:pagelist group=Cookbook  name=A*,B*   :)
(:pagelist name=Cookbook.A*,Cookbook.B* :)
(:pagelist group=Cookbook  name=[AB]*   :)
(:pagelist name=Cookbook.[AB]*          :)
Seiten in den Kategorien Media oder Images (wenigstens eine Kategorie)
(:pagelist category=Media,Images  :)
Seiten in den Kategorien Media und Images (beide)
(:pagelist category=+Media,+Images  :)

Wenn Sie mehrfache Bedingungen benutzen wollen, müssen Sie Kommata als Trenner einsetzen. Zum Beispiel

key="ein Wert,anderer Wert"

trail=

Die "trail="-Option besorgt sich die Liste der anzuzeigenden Seiten aus einem Seitenabfolgeindex:

  • Zeige die Seiten in der Dokumentation an, geordnet nach der Änderungszeit
(:pagelist trail=PmWiki.DocumentationIndex order=-time:)
  • Zeige die fünf zuletzt geänderten Seiten an
(:pagelist trail=RecentChanges count=5:)

list=

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.
  • "list=grouphomes" listet nur die Homepages aller Gruppen im Wiki, also Gruppe.Gruppe oder Gruppe.HomePage oder andere/lokalisierte Homepages, wie sie ggf. in $DefaultName und/oder $PagePathFmt definiert wurden.

Wikiadministratoren können angepasste Listen über das Suchmuster-Array $SearchPatterns definieren (siehe Cookbook:SearchResults?).

fmt=

Die "fmt="-Option bestimmt, wie das Ergebnis angezeigt wird. PmWiki definiert mehrere Formate vor:

  • fmt=#default - Das ist das Format, das beim Fortlassen des fmt=-Parameters benutzt wird. Es ist in PageListTemplates wie #bygroup definiert (siehe unten).
    Beachten Sie, dass das PmWiki.org-Wiki diese Definition in LocalTemplates überschreibt. Das wird in Ihrem Wiki nicht so sein, da Site/LocalTemplates nicht in der Distribution vorhanden ist.
  • fmt=#bygroup - Zeige Seitennamen, gruppiert nach Gruppennamen an, innerhalb der Gruppen alphabetisch sortiert.
  • fmt=#simple - Zeige eine einfache geordnete Liste von Seiten an in der Form Gruppe.Name.
  • fmt=#title - Zeige in der Liste die Seitentitel statt der Namen an (keine Gruppennamen). Nutze "order=title", um die Liste nach Titeln zu sortieren, vorgegeben ist die Sortierung nach Seitennamen.
  • fmt=#titlespaced - Zeige in der Liste die Seitentitel statt der Namen an, aber ggf. mit Leerzeichen, sortiert nach Titeln. Das ist nur relevant, wenn in der Seite kein Titel mit (:title ttttt:) definiert wurde. Dann wird der Seitenname angezeigt wie bei fmt=#simplenamespaced.
  • fmt=#group - Zeige eine Liste von Wikigruppen (ohne die Seiten in den Gruppen).
  • fmt=#grouphomes - Zeige eine optimierte Aufzählungsliste von Gruppenstartseiten an (funktioniert mit count=.... ), PmWiki 2.2.103 oder später erforderlich.
  • fmt=#include - Zeige den Inhalt jeder Seiten in der Liste an (Beachten Sie, das kann seeehr lange dauern für eine lange Liste!).
  • fmt=#includefaq - fügt den FAQ-Abschnitt nach dem Namen der Seite ein. (Das kann sehr aufwändig sein, insbesondere, wenn die Liste Seiten enthält, in denen der [[#faq]]-Anker fehlt!)
  • fmt=#description - Listet die Titel der Seiten auf und fügt die Beschreibung an, wenn diese existiert. Es werden hinter jeden Titel Bindestriche gesetzt, auch wenn es keine Beschreibung gibt. Dies kann nicht verhindert werden.
  • fmt=#simplename - Zeige eine einfache Aufzählungsliste mit den Seitennamen (zusammengeschrieben) an, ohne die Gruppennamen.
  • fmt=#simplenamespaced - Zeige eine einfache Aufzählungsliste mit den Seitennamen (ggf. mit Leerzeichen) an, ohne die Gruppennamen.
  • fmt=#titlesummary - Listet die Titel mit den Zusammenfassungen der Seiten auf, die in der Seite mit (:title ttttt:) und (:Summary:sssss:) definiert wurden.

Diese Formate werden definiert in Seitenlistenvorlagen, die angepasst werden können (siehe auch Seitenlisten mit Standardvorlagen und PageListTemplates (in Englisch)).

fmt=count

Dies Format ist nicht in der Seitenlistenvorlage definiert:

  • fmt=count - Zeige die Anzahl der Seiten in der Liste an (Beachten Sie das Fehlen des '#'). In einem 'trail' zählt fmt=count existierende und nicht existierende Seiten; um count auf existierende Seiten zu beschränken, benutzen Sie if="exists =$FullName smiley" fmt=count (mailing list).

link= und category=

Die "link="- und "category="-Argumente implementieren Rückverweise – d. h., sie geben eine Liste von Seiten zurück, die einen Verweis auf das Ziel enthalten oder in denen die Kategorie deklariert ist. Das ist insbesondere nützlich für Kategorie-Seiten und zum Finden zugehöriger Seiten.

Das category=Name-Argument unterscheidet sich vom link=Category.Name-Argument, indem es nur Seiten auflistet, die in der Kategorie deklariert sind mit dem Markup [[!Name]], dagegen sind Seiten, die einfach auf [[Category/Name]] verweisen, nicht enthalten (es sei denn, sie enthalten ebenfalls [[!Name]]).

  • Alle Seiten mit einem Verweis auf den Dokumentationsindex von PmWikiDe
(:pagelist link=PmWikiDe.DocumentationIndex:)
  • Alle Seiten mit Verweisen auf die aktuelle Seite
(:pagelist link={$FullName}:)
  • Alle Seiten in der "Skins"-Kategorie
(:pagelist category=Skins:)

Seit PmWiki 2.3.0 akzeptieren link= und category= mehrfache und negative Ziele sowie Listen mit Jokerzeichen, siehe Abschnitt Joker.

Beachten Sie, link= and category= ignorieren die Direktiven (:if...:), (:include...:), (:redirect...:), (:pagelist...:) und Seitentextvariablen-Direktiven, während sie nach Verweisen in den Seiten suchen. Das bedeutet, dass Verweise in eingefügten Seiten nicht gefunden werden, aber Verweise innerhalb nicht angezeigter bedingter Auszeichnungen gefunden werden. Siehe hierfür in Seitentextvariablen, wie Verweise in einer Seite versteckt werden, aber dennoch von link= gefunden werden können. Im Kapitel über Seiten-Text-Variablen werden Wege beschrieben, einen Verweis auf einer Seite zu verstecken und doch link= zu erlauben, ihn zu finden.

Beachten Sie außerdem, dass das neue category=-Argument erfordert, dass alle Seiten, die [[!Category]]-Verweise enthalten, reindiziert werden müssen. Siehe hierzu das Rezept Cookbook:ReindexCategories, das diesen Vorgang automatisieren kann.

count=

Die "count="-Option bietet die Möglichkeit,

  • die Seitenliste auf ein bestimmte Anzahl von Seiten zu begrenzen,
  • Ausschnitte aus der Liste anzuzeigen,
  • einen Abschnitt des Listenendes anzuzeigen,
  • Seiten in umgekehrter Reihenfolge anzuzeigen.
Eine einfache, unnummerierte Liste der zehn zuletzt geänderten Seiten:

(:pagelist trail=Site.AllRecentChanges count=10 fmt=#simple:)

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

wrap=

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 MarkupToHTML ist).

class=

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.

request=

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.
  • Enthält der URL ?order=, bleibt die Liste unsortiert.

Hinweise: Kodieren Sie jedes "#" in dem URL als "%23".
Da dieser Parameter Benutzern ohne Bearbeiten-Recht die Möglichkeit gibt, Seitenlisten nach ihrer Façon zu gestalten, sollten sie seine Sicherheitsauswirkungen für Ihre Website beachten, bevor Sie ihn einsetzen.

Seit Version 2.2.71 ist es möglich, explizit nur bei ausgewählten Parametern zu erlauben, sie zu überschreiben, oder bei einigen Parametern zu verbieten, sie zu überschreiben. Wenn Sie das brauchen, setzen Sie statt der 1 den Parameternamen ein.

Alle Parameter zum Überschreiben frei geben:
(:pagelist request=1:)

Nur die Parameter 'order' und 'count' dürfen überschrieben werden:
(:pagelist request=order,count:)

Erlaube, alle Parameter zu überschreiben, außer 'fmt' und 'trail', beachten Sie das Minuszeichen vor jedem verbotenen Parameter.
(:pagelist request=-fmt,-trail:)

req=1

Der req=1-Parameter erfordert, dass Suchbegriffe übertragen werden (das heißt, dass der Benutzer "Suchen" in einem Suchenformular angeklickt hat oder einen Verweis mit zusätzlichen Parametern folgt wie [[Page?q=terms&order=-name]]), bevor die Seitenliste erzeugt wird.
Beachten Sie, dass (:pagelist request=1 req=1:) fast wie (:searchresults:) funktioniert, wenn auch ohne die Zeilen "Suche nach ..." und "X Treffer aus insgesamt Y durchsuchten Seiten.". Beide Parameter "request=1" und "req=1" sind nötig.

Wenn eine Suche durchgeführt wird, entweder über eine searchbox-Direktive oder das Suchfeld des Skins, wird die Seite zum Darstellen des Suchergebnisses benutzt, wenn die Seite eine searchresults-Direktive enthält; enthält die Seite die searchresults-Direktive nicht, wird Site.Search für die Ausgabe des Suchergebnisses benutzt.

passwd=

Die "passwd"-Option liefert nur jene Seiten zurück, die eins der Passwortattribute gesetzt haben (z. B. passwd=write).

if=

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 einfache Anführungszeichen gesetzt werden.

  (:pagelist if="date 2009-01-01..2009-12-31 '{=$:Mydate}'" :)

order=

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 können Sie Ihre eigenen Sortierreihenfolgen? erzeugen:

  • order=name - alphabetisch nach Namen (Standardreihenfolge)
  • order=$Name - alphabetisch nach Namen gruppenübergreifend
  • order=title - alphabetisch nach Titeln statt nach Namen
  • order=time - zuletzt geänderte Seiten am Ende
  • order=ctime - Erstellungszeit (siehe Anmerkung)
  • order=group,title - mehrfache Kriterien, in diesem Fall sortiert nach Gruppen, innerhalb der Gruppen sortiert nach Titeln
  • order=random - verwürfle die Seiten in eine zufällige Reihenfolge
  • order=$:pagetextvarname - alphabetisch nach Seiten-Text-Variablen-Werten (beachten Sie: keine geschweiften Klammern um die Variable)
  • order=$pagevarname - alphabetisch nach Seiten-Variablen-Werten (beachten Sie: keine geschweiften Klammern um die Variable)

Außerdem erlaubt die order=-Option angepasste Sortierfunktionen zu schreiben.

  • Anmerkung: trail= erhält die Reihenfolge der Seiten, so wie sie in der entspechenden Seite angeordnet sind (es sei denn, man hat ausdrücklich order= eingesetzt oder es gibt eine vorgegebene Reihenfolge in der Seitenlistenvorlage). Also ist PmWikis alphabetische Standardreihenfolge außer Kraft gesetzt, wenn trail= eingesetzt wird.
  • Annmerkung: ctime (Erstellungszeit) wird in den Seiten erst von PmWiki 2.1.beta15 an aufwärts gespeichert. Seiten, die mit vorherigen Versionen angelegt wurden, enthalten das ctime-Attribut nicht und können danach nicht sortiert werden.

cache=0

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.

Variablen als Parameter angeben

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 (seit 2.2.9 die Standardeinstellung).

Zum Beispiel mit der Vorlage

>>comment<<
[[#tvars]]
(:template default count=1 ParamName=Simon:)
Hi, {$$ParamName}, how are you today?
[[#tvarsend]]
>><<

(:template default count=1 ParamName=Simon:) Hi, $$ParamName smiley, how are you today?

erhält man:

(:pagelist fmt=#tvars ParamName="Sam":)

(:pagelist fmt=#tvars ParamName="Sally":)

(:pagelist fmt=#tvars:)

Siehe auch $EnableUndefinedTemplateVars.

Beispiele

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:)

Die Searchbox-Direktive

Die (:searchbox:)-Direktive nimmt generell die gleichen Parameter wie die (:pagelist:)- und die (:input search:)-Direktive an:

  • Seitenlisten-Parameter können zum Eingabetext der Searchbox (oder zum Markup oder zu beidem) hinzugefügt werden.
  • Texteingabebox-Parameter können zum Searchbox-Markup hinzugefügt werden.
    • Ein anfänglicher Suchstring kann im Searchbox-Markup angegeben werden, muss aber die Form value='suchstring' haben. Dieser Suchstring erscheint im Eingabefeld und kann für die Suche (vor der Suche) verändert werden.
    • Der voreingestellte Platzhalter-Wert ist "Search" (lokalisiert für andere Sprachen) und kann in der Form placeholder="Tippe Suchbegriffe ..." verändert oder mit placeholder="" entfernt werden. In jüngsten Browsern erscheint dieser Wert grau im Suchfeld, wenn es leer ist. Beachten Sie, dieses Attribut ist valides HTML5, wenn Sie es aber in einem HTML4-Skin benutzen, wird Ihre Seite nicht valide sein.
    • Optional können Sie aria-label- und andere aria-*-Zugänglichkeitsattribute hinzufügen, die dem Eingabefeld angefügt werden.
    • Die Größe des Eingabefeldes kann mit dem size-Parameter angegeben werden, wobei size=40 der aktuelle Standard ist.
      • Tipp: Wenn mehr als eine Searchbox auf der Seite erscheinen, kann man mit einem leeren Anfangswert (value='') im Markup aller Eingabefelder verhindern, dass sich ein Suchstring auf alle Searchboxen ausbreitet.
  • Die Zielseite für die Ausgabe des Suchergebnisses lässt sich mit dem Parameter target=GruppenName.SeitenName setzen. Der Standard ist die aktuelle Seite.
  • Das ganze Searchbox-Eingabeformular kann überschrieben werden, indem man die Variable $SearchBoxFmt in seiner Konfigurationsdatei definiert. Wenn $SearchBoxFmt definiert ist, werden die Parameter für (:searchbox:) ignoriert und der Inhalt der $SearchBoxFmt-Variablen wird statt dessen benutzt.

Der zusätzliche Parameter label="Label" kann benutzt werden, um die Aufschrift der zugehörigen Submit-Schaltfläche zu ändern.

   (:searchbox label="Durchsuche dies Wiki":)

Standardmäßig hat das Eingabefeld den "Text"-Typ wegen der Kompatibilität mit HTML/XHTML. Alternativ können Sie es für HTML5 auf den "search"-Inputtyp setzen, siehe $SearchBoxInputType (einige HTML5-Skins setzten das schon ein).

Die Suchergebnis-Direktive

Die (:searchresults:)-Direktive nimmt generell die gleichen Parameter wie die (:pagelist:)- und die (:input search:)-Direktive an.

request=1 req=1

Die Suchergebnisse erscheinen ohne die Einleitung, die da heißt "Suche nach ..." .

Anpassen von "Suche nach ..." und "3 Treffer auf ..."

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.'
));
Hinweis: 'de' muss für andere Sprachen als Deutsch entsprechend angepasst werden.

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>");

Sie können auch die Zeilen über und unter der erzeugten Liste entfernen, indem Sie dies in die config.php-Datei einfügen:

$SearchResultsFmt = '$MatchList';

Siehe auch

FAQ

Wie öffnet PmWiki Seiten mit PageStore?

Wenn PmWiki eine Datei zum Lesen öffnen muss, fragt es die PageStore-Objekte eines nach dem anderen, in der Reihenfolge, in der Sie sie in der config.php-Datei definiert haben, ob sie MeineGruppe.MeineSeite haben. Das erste PageStore-Objekt, das diese Seite findet, gibt sie zurück und wenn es noch mehr PageStore-Objekte gibt, werden diese nicht behelligt.

Wenn Sie ein PageStore-Objekt definieren mit Pfaden wie wiki.d/{$Group}/{$FullName} und dann fragen "gibt es eine Seite MeineGruppe.MeineSeite", prüft das PageStore-Objekt nur "ist da eine Datei wiki.d/MeineGruppe/MeineSeite", es sieht also nur in dem Unterverzeichnis ''ki.d/MeineGruppe nach, nicht in anderen Unterverzeichnissen.

Wenn Sie eine Seite schreiben, wird nur das erste PageStore-Objekt benutzt, das gewöhnlich $WikiDir ist. So können wir die Dokumentation in wikilib.d haben, doch wenn Sie eine Seite aus PmWiki oder der Site-Gruppe bearbeiten, wird sie in wiki.d gespeichert und von da an wird nur noch diese Datei in wiki.d gelesen und geschrieben.

Wie ist das Verhalten von pagelist und searchresults, wenn nur ein Name oder Wort angegeben wird?

Beide, pagelist und searchresults, durchsuchen alle Gruppen, außer entweder

  • es gibt ein group=DieseGruppe-Argument im Suchfeld oder im Markup, oder
  • Sie haben (:template default group=EineGruppe,{*$Group}:) in der pagelist-Vorlage, oder
  • es gibt ein request=1-Argument im Markup und da ist irgendwie ein $_REQUEST['group']-Argument, z. B. vom Suchformular oder von der URL, oder
  • Sie setzen irgendwelche $SearchPatterns['xy'] und list=xy, oder
  • setzen eine Standard-$MakePageListOpt['gruppe'] oder $SearchBoxOpt['gruppe'].

Wenn eine Option nicht benutzt wird, sollte diese Option nicht vordefiniert werden.

  • Wenn es kein Suchwort gibt, zeige alle Seiten;
  • wenn group= nicht benutzt wird, zeige alle Gruppen;
  • wenn name= nicht benutzt wird, zeige alle Seiten;
  • wenn link= nicht benutzt wird, zeige Seiten, die irgendwo hin zeigen oder auch nicht;
  • wenn count= nicht benutzt wird, zeige alle Seiten anstatt nur einen Teil davon (die einzige Ausnahme ist die order=-Option, die als Standard order=name enthält, da ohne diesen Standard die Ergebnisse zwischen Seitennachladen uneinheitlich sortiert werden, was besonders unglücklich ist, wenn Sie auch noch count=21..30 benutzen.

Wie kann eine eigene Funktion das Ergebnis einer Seitenliste als Array abrufen?

Siehe diesen Thread in der Mailingliste. für die Liste aller Seiten


Übersetzung von PmWiki.PageLists,   Originalseite auf PmWikiDe.PageLists   —   Backlinks

Zuletzt geändert:   PmWikiDe.PageListsam 04.03.2023
 PmWiki.PageListsam 03.03.2023