Similar to Gorrie Coe's silverstripe-menu module but it allows users to create items within the CMS admin interface as well
- silverstripe/framework ^4.0
- symbiote/silverstripe-gridfieldextensions ^3.1
- gorriecoe/silverstripe link ^1.1
As it is common to reference menu sets by name/title in templates, you can configure sets to be created automatically during the /dev/build task. These sets cannot be deleted through the CMS.
Sitelease\MenuSets\Models\LinkMenuSet:
sets:
main: Main menu
secondary: Another menu
By default menus will be flat, which means links can not have child links associated with them. If you need a nested menu structure, you can do so by adding allow_children: true
to the yml file as shown below.
Sitelease\MenuSets\Models\LinkMenuSet:
sets:
footer:
title: Footer menu
allow_children: true
Once you have created your menus you can add links in the admin area. The fields are inherited from silverstripe link.
If you need to automatically add links to a menu after the creation of a page, you can do so by adding the following extension to page and defining owns_menu
.
Page:
extensions:
- Sitelease\MenuSets\Extensions\SiteTreeAutoCreateExtension
owns_menu:
- main
- footer
<ul>
<% loop LinkMenuSet('footer') %>
<li>
{$Me}
</li>
<% end_loop %>
</ul>
See silverstripe link for more template options.