Hyperbook Dokumenation

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 Liste
  • ul: Erzeugt eine ungeordnete Liste
  • glossary: Erzeugt eine gruppierte Liste nach Anfangsbuchstaben
  • #<snippet>: Nutzt ein eigenes Snippet zum Erstellen der Liste. Das Snippet erhält pages mit allen gefilterten Seiten.

source

Ein Abfrageausdruck zum Filtern von Seiten. Unterstützt:

Felder:

  • href(regex): Filtert nach der Seiten-URL
  • name(regex): Filtert nach dem Seitennamen
  • keyword(regex): Filtert nach Schlüsselwörtern der Seite
  • description(regex): Filtert nach der Seitenbeschreibung
  • <customField>(regex): Filtert nach beliebigen Frontmatter-Feldern

Operatoren:

  • AND: Beide Bedingungen müssen zutreffen
  • OR: Eine der Bedingungen muss zutreffen
  • NOT: 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 Seitennamen
  • index: Sortiert nach dem Seitenindex
  • href: Sortiert nach der URL

Eigene Felder:

  • Jedes Frontmatter-Feld kann verwendet werden (z.B. difficulty:asc, priority:desc)

Richtungen:

  • asc: Aufsteigend
  • desc: 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"}

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.*)"}

Bei der Verwendung von eigenen Snippets mit pagelist sind die dateibezogenen Helfer nicht verfügbar:

  • file
  • rfile
  • base64
  • rbase64

Alle anderen Helfer (wie dateformat, truncate, truncateWords, usw.) funktionieren normal.

Seitenverzeichnis

Teilbare URL erstellen

Abschnitte auswählen

✎ GitHub© Copyright 2026 by OpenPatch