如何为mod_menu制作一个模板覆盖链接输出的可选布局


How to make a template overwrite for mod_menu with alternative layouts for link outputs?

我理解并喜欢模板覆盖。我需要对菜单输出做一些更重的更改(基本上使输出更好地与Bootstrap一起工作)-但仅针对某些菜单。

目前在Joomla 3中,mod_menu/tmpl文件夹中有以下内容:

default.php
default_component.php
default_heading.php
default_separator.php
default_url.php

如果我想改变类,我会复制default.php到我的mytemplate/html/mod_menu和改变它。很好,没问题。

如果我想改变链接输出,我可以将default_component.php复制到mytemplate/html/mod_menu并更改它。很好,没问题。

如果我想有一个不同的"可选布局"的选择,我将mytemplate/html/mod_menu/default.php重命名为newlayout.php,然后在该菜单的管理模块管理器中选择它。很好,没问题。

这里的问题:如果我想有链接输出更改某些菜单,但不是所有的,我想我会改变default_component.phpnewlayout_component.php,就像我上面所做的那样,这将对应于newlayout.php…但这行不通。

问题:

1)如何为每个default_component.php, default_heading.php, default_separator.php, default_url.php模板文件(不只是覆盖)的替代布局?

2)我认为default_url.php是会影响链接输出的,但似乎是default_component.php。每一个都有什么作用呢?我在joomla.org上找不到任何关于这个的信息。

谢谢!

  1. 可选布局功能仅适用于主文件(default.php),不适用于子布局(default_component.php,…)。因此,您必须创建自己的newlayout.php,然后可以加载newlayout_component.php,或使用default_component.php。事实上,如果没有找到newlayout_component.php, default_component.php将被用作回退。
  2. 代码切换链路的$item->type'separator', 'url', 'component''heading''default_'.$item->type处理,其他所有内容将使用default_url。因此,普通URL确实应该由default_url.php生成,而不是default_component.php。如果它的行为不同,很可能是一个bug。
相关文章: