{#- The application shell, the template shell('app') names. It draws the menus from the framework's menu registry, menu_sections() in the sidebar and user_menu_sections() in the account menu, the entries features register in their init_feature, and opens the widget slots every application shell provides (layout.head.css, layout.header.menu, layout.navbar.items, layout.navbar.user, layout.footer, layout.scripts). Next to the registry, a menu slot draws only the features that register no entry (menu_slot), so a link a feature adds through the slot shows and the entries of a feature that does both do not show twice. While the registry has nothing for the account, the menu slots are the whole menu. -#} {%- macro slot(name) -%} {% for hook in get_template_hooks(name) %}{{ hook() | safe }} {% endfor %} {%- endmacro -%} {%- macro menu_slots(names) -%} {% if menu_slot is defined %}{% for name in names %}{% for hook in menu_slot(name) %}{{ hook() | safe }} {% endfor %}{% endfor %}{% endif %} {%- endmacro -%} {%- macro sidebar_section(section) -%} {% if section.label %}