Navigation

  • index
  • next |
  • previous |
  • wafer 0.16.1 documentation »
  • Menus

Menus¶

Overview¶

Wafer includes a simple system for generating either static or dynamic menus for the navigation bar at the top of each page.

A single level of sub-menus is supported.

Static menus¶

Static menus are configured using the WAFER_MENUS setting. WAFER_MENUS is a list of either sub-menus or menu items.

Menu items have the following keys:

label

The text displayed for the menu item.

url

The URL the item links to.

sort_key

A value used to sort the list of items into a custom order (optional).

image

An absolute or relative URL to an image to display instead of the label (optional).

Sub-menu have the keys:

menu

The unique name of the sub-menu.

label

The text to display for the sub-menu.

items

A list of menu items in the sub-menu (sub-sub-menus are not supported).

sort_key

A value used to sort the list of items into a custom order (optional).

Example snippet from settings.py:

from django.utils.translation import gettext_lazy as _
from django.core.urlresolvers import reverse_lazy

WAFER_MENUS += (
    {"menu": "about", "label": _("About"), "items": []},
    {"name": "venue", "label": _("Venue"),
     "url": reverse_lazy("wafer_page", args=("venue",))},
    {"menu": "sponsors", "label": _("Sponsors"),
     "items": []},
    {"menu": "talks", "label": _("Talks"),
     "items": [
         {"name": "schedule", "label": _("Schedule"),
          "url": reverse_lazy("wafer_full_schedule")},
         {"name": "accepted-talks", "label": _("Accepted Talks"),
          "url": reverse_lazy("wafer_users_talks")},
         {"name": "speakers", "label": _("Speakers"),
          "url": reverse_lazy("wafer_talks_speakers")},
     ]},
}

The empty sub-menus are populate dynamically (see the next section).

Dynamic menus¶

Dynamic menus are configured using the WAFER_DYNAMIC_MENUS setting. WAFER_DYNAMIC_MENUS is a list of functions or names of functions to call to dynamically add sub-menus or menu items.

Dynamic sub-menus and menu items are added after static ones.

By default, two kinds of menu items are dynamically generated:

  • Menus and menu items for pages.

  • A menu and menu items for sponsors.

Example snippet from settings.py:

WAFER_DYNAMIC_MENUS = (
    'wafer.pages.models.page_menus',
    'wafer.sponsors.models.sponsor_menu',
)

Page menus¶

Page menus are generated by wafer.pages.models.page_menus. They appear when a page is marked for inclusion in the navigation menu. Each page selected for inclusion as a menu entry with the page name that links to the page. If the page has a parent, it appears in a sub-menu named after its root ancestor.

Sponsor menu¶

The sponsor menu is a single sub-menu named sponsors. It lists the sponsors in order of precedence with links to their sponsor pages and includes links to the full list of sponsors and the list of sponsorship packages at the bottom of the sub-menu.

Table of Contents

  • Menus
    • Overview
    • Static menus
    • Dynamic menus
    • Page menus
    • Sponsor menu

Previous topic

Schedule

Next topic

Static Site Generation

This Page

  • Show Source

Quick search

Navigation

  • index
  • next |
  • previous |
  • wafer 0.16.1 documentation »
  • Menus
© Copyright 2014-2020, The wafer development team. Created using Sphinx 7.2.6.