Seitenverzeichnis
Das ::pagelist-Element ermöglicht es, ein dynamisches Seitenverzeichnis zu erstellen, das eine Liste von Seiten auf einer Webseite anzeigt. Dabei können verschiedene Optionen verwendet werden, um die angezeigten Seiten zu filtern, das Format der Liste zu wählen und die Reihenfolge zu bestimmen.
::pagelist{format="<Format>" source="<Source>" orderBy="<Sortierkriterium>"}
Parameter
format
Definiert, wie die Liste dargestellt wird:
ol: Erzeugt eine geordnete Listeul: Erzeugt eine ungeordnete Listeglossary: Erzeugt eine gruppierte Liste nach Anfangsbuchstaben#<snippet>: Nutzt ein eigenes Snippet zum Erstellen der Liste. Das Snippet erhältpagesmit allen gefilterten Seiten.
source
Ein Abfrageausdruck zum Filtern von Seiten. Unterstützt:
Felder:
href(regex): Filtert nach der Seiten-URLname(regex): Filtert nach dem Seitennamenkeyword(regex): Filtert nach Schlüsselwörtern der Seitedescription(regex): Filtert nach der Seitenbeschreibung<customField>(regex): Filtert nach beliebigen Frontmatter-Feldern
Operatoren:
AND: Beide Bedingungen müssen zutreffenOR: Eine der Bedingungen muss zutreffenNOT: Negiert eine Bedingung(): Gruppiert Bedingungen zur Steuerung der Priorität
Operator-Priorität (höchste zuerst): NOT > AND > OR
orderBy
Sortiert die Ergebnisse nach einem beliebigen Feld. Format: feld:richtung
Eingebaute Felder:
name: Sortiert nach dem Seitennamenindex: Sortiert nach dem Seitenindexhref: Sortiert nach der URL
Eigene Felder:
- Jedes Frontmatter-Feld kann verwendet werden (z.B.
difficulty:asc,priority:desc)
Richtungen:
asc: Aufsteigenddesc: Absteigend (Standard)
Seiten mit fehlenden oder null-Werten für das Sortierfeld werden ans Ende sortiert.
limit
Begrenzt die Anzahl der zurückgegebenen Ergebnisse.
::pagelist{source="href(/elements/.*)" limit="5"}
Beispiele für die Abfragesprache
Einfache Abfragen
::pagelist{source="href(/elements/.*)"}
::pagelist{source="name(.*IDE.*)"}
::pagelist{source="keyword(tutorial)"}
AND - Beide Bedingungen müssen zutreffen
::pagelist{source="href(/elements/.*) AND keyword(media)"}
::pagelist{source="name(.*IDE.*) AND href(.*sql.*)"}
OR - Eine der Bedingungen trifft zu
::pagelist{source="name(Video) OR name(Audio)"}
::pagelist{source="keyword(beginner) OR keyword(tutorial)"}
NOT - Passende Seiten ausschließen
::pagelist{source="href(/elements/.*) AND NOT name(Video)"}
::pagelist{source="NOT keyword(deprecated)"}
Klammern - Bedingungen gruppieren
::pagelist{source="href(/elements/.*) AND (name(Video) OR name(Audio))"}
::pagelist{source="(href(/elements/.*) OR href(/advanced/.*)) AND keyword(test)"}
Eigene Frontmatter-Felder
Wenn deine Seiten eigene Frontmatter-Felder haben:
---
name: Meine Seite
difficulty: beginner
tags:
- tutorial
- video
---
Kannst du danach filtern:
::pagelist{source="difficulty(beginner)"}
::pagelist{source="tags(tutorial)"}
::pagelist{source="difficulty(beginner) OR difficulty(intermediate)"}
::pagelist{source="tags(video) AND NOT difficulty(advanced)"}
Sortierbeispiele
Nach Name sortieren
::pagelist{source="href(/elements/.*)" orderBy="name:asc"}
::pagelist{source="href(/elements/.*)" orderBy="name:desc"}
Nach eigenen Frontmatter-Feldern sortieren
::pagelist{source="tags(tutorial)" orderBy="difficulty:asc"}
::pagelist{source="href(/.*)" orderBy="priority:desc"}
Formatbeispiele
Glossar
::pagelist{format="glossary" source="href(/glossary/.*)"}
Ein Glossar aller Elemente
::pagelist{format="glossary" source="href(/elements/.*)"}
Ungeordnete Liste nach dem href
::pagelist{format="ul" source="href(/elements/.*)" orderBy="name:desc"}
- YouTube
- Web IDE
- Video
- Typst
- Struktog
- SQL IDE
- Snippets
- Slideshow
- Seitenverzeichnis
- Scratchblöcke
- Reiter
- QR Code
- Pyide
- PlantUML
- P5
- Online IDE
- Multievent
- Mermaid
- Mathematik
- Lesezeichen
- Lernkarte
- Klappkasten
- Kacheln
- JSXGraph
- Hinweise
- H5P
- Glossar
- Geschützer Bereich
- GeoGebra
- Excalidraw
- Emoji
- Embed
- Download
- Audio
- Archiv
- ABC Musik
Geordnete Liste mit IDE im Namen und einmal zusätzlich mit SQL in der URL
::pagelist{format="ol" source="name(.*IDE.*)"}
::pagelist{format="ol" source="href(.*sql.*) AND name(.*IDE.*)"}
Mit OR mehrere spezifische Seiten auflisten
::pagelist{format="ul" source="name(Video) OR name(Audio) OR name(YouTube)"}
Seiten mit NOT ausschließen
::pagelist{format="ul" source="href(/elements/.*) AND NOT name(.*IDE.*)" orderBy="name:asc" limit="10"}
Eigenes Snippet
Das Snippet liegt im Ordner snippets mit dem Namen list.md.hbs
{{#each pages}}
- {{{ name }}}: [{{ href }}]({{ href }})
{{/each}}
::pagelist{format="#list" source="name(^V.*)"}
- Vercel: /de/hosting/vercel
- Video: /de/elements/video
- Vorlage - Demo: /de/advanced/template-demo-json
- Vorlagen: /de/advanced/templates
- Vorlagen - Demo: /de/advanced/template-demo-yaml
Bei der Verwendung von eigenen Snippets mit pagelist sind die dateibezogenen Helfer nicht verfügbar:
filerfilebase64rbase64
Alle anderen Helfer (wie dateformat, truncate, truncateWords, usw.) funktionieren normal.