MenuItem
Conifer extends Timber's MenuItem class with helpers for rendering hierarchical navigation.
Registering MenuItem
As with Timber, register your custom MenuItem class in the class map so Timber knows which class to use when fetching MenuItems
php
<?php
use Conifer\Navigation\MenuItem;
use Conifer\Site;
$site = new Site();
$site->configure(function () {
add_filter('timber/menuitem/classmap', function (array $classmap): array {
return array_merge($classmap, [
'primary' => MenuItem::class,
'footer' => MenuItem::class,
]);
});
});Determining the current post
Use points_to_current_post_or_ancestor() to determine whether a menu item points to the current post or one of its ancestors.
twig
{% if item.points_to_current_post_or_ancestor %}
<p>This item points to the current post (or one of its ancestors).</p>
{% endif %}Rendering children
Conifer provides two related helpers:
has_children()checks whether the item has child menu items.display_children()returnstrueonly when the item has children and points to the current post (or an ancestor).
twig
{% if item.has_children %}
{% if item.display_children %}
{% for child in item.children %}
<li class="nav-child-item">
<a class="nav-child-link" href="{{ child.link }}">{{ child.title }}</a>
</li>
{% endfor %}
{% endif %}
{% endif %}