Rareloop / lumberjack

Lumberjack is a powerful MVC framework for the modern WordPress developer. Write better, more expressive and easier to maintain code.
https://lumberjack.rareloop.com
MIT License
371 stars 34 forks source link

Auto-register menus from 'config/menus.php' #28

Open jweston491 opened 2 years ago

jweston491 commented 2 years ago

What does this implement/fix?

Out of the box, Lumberjack only registers one nav menu, "main-nav" in /config/menus.php, then manually adds that navigation Menu to the context in /app/Http/Lumberjack.php.

As currently implemented, this doesn't seem very DRY as it requires manually hard-coding the registered menus into the Lumberjack class. This pull request aims to rectify that.

Looking through the docs, I wasn't sure if there's a preferred way to register multiple navigation menus and add them to context, so I tried to build on the current implementation. If there's a better way to register new nav menus and add them to the context, please let me know.

Any other comments?

Twig doesn't like it when you use a dash (-) in a variable/attribute name, since Twig will interpret the dash as a minus operator. But registering navigation menus with underscores instead of dashes doesn't seem to be the "WordPress way". So if anyone wanted to use the default "main-nav" in their Twig templates, they'd have to use Twig's attribute() function, for example:

{% for item in attribute(_context, 'main-nav').items %}
    // Access item.title, item.link, etc.
{% endfor %}