Drupal8:搞懂模板层级轻松配置二级导航菜单

  Drupal8.7.6自带了菜单区块Mainnavigation,把该区块放到指定的区块,就可以实现从后台增加、删除、修改一级导航菜单了。
 
  不管是网站头部的横排菜单,还是网站底部的竖排菜单,抑或是列表页左、右侧的分类菜单,都可以通过默认菜单区块,或者自定义菜单区块来实现。接下来,要分享的是如何开发二级导航菜单。
 
  一、添加二级导航菜单
 
  在“结构->Menus”中默认的菜单或者自定义菜单中添加导航菜单,并通过拖拽的方式设置好一级菜单、二级菜单。可以改变菜单的顺序,也可以设置有些菜单显示,有些菜单不显示。需要说明的是,此外添加的导航菜单,默认就是个动态区块。
 
  二、配置导航菜单模板
 
  一般来说,定义区块后,都要把它放到指定的区域显示出来,这样,就可以在源代码中通过debug查看该区块使用的是哪个模板,方便快速调试。
 
  默认的导航菜单使用的模板是menu--main.html.twig,分析该模板发现,在for循环输出中,{{link(item.title,item.url)}}是用来输出一级菜单,而{{menus.menu_links(item.below,attributes,menu_level+1)}}是用来输出二级菜单的。在他们的外面包裹上带类的标签,即可原样输出目标菜单。
 
  然后,按照定义区域、放置变量、定义区块、放置区块、修改模板的思路,检测各个环节是否正确配置,重建缓存后,即可输出需要的二级导航菜单。