MyNixOS website logo
Description

Allow Hakyll to create hierarchical menues from directories.

Hakyll extension which supports the creation of hierarchical menus from source files in a directory structure. Adittionally single page web sites can created by using flattened page id's instead of urls.

hakyll-dir-list

Hakyll extension which supports the creation of hierarchical menus from source files in a directory structure. Adittionally single page web sites can created by using flattened page id's instead of urls.

Build the library

  • stack build

Usage

The exported dirListField function is similar to the Hakyll listField template function but creates additional context information which can be used in the template to create a hierarchical menu.

Context usable inside the template

  • $begin-tags$ injects <li> and <ul> tags if apropriate
  • $end-tags$ contains the corresponding </li> and </ul> tags
  • $full-page-id$ is the hyphen seperated path of the page
  • use configuration to get level dependant structuring tags

Metainformation in the source files

For each subdirectory which should be processed one source file with the same base name should exist which can contain meta information:

  • pages/a.md top page for directory a
  • pages/a/foo.md page foo within a

The following meta information can be given

  • page-id part of the generated id, if not given the base name of the file
  • page-order give an ordering key for sorting in the current directory level, if not given the page-id will be used

For a more fine grained control the tags which are used are configurable for each level of the menu.

Example

See the example for an illustration of usage.

Metadata

Version

1.0.0.4

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows