我在一个网站上使用了 2 个不同的 mod_menu 实例:menu1 和 menu2。
根据图形设计,这 2 个菜单具有不同的外观和感觉。
我在问你是否可以在 mod_menu 模块上进行 2 种不同的模板覆盖。或者解决这个问题的最佳方法是什么?
感谢您的回答。
我在一个网站上使用了 2 个不同的 mod_menu 实例:menu1 和 menu2。
根据图形设计,这 2 个菜单具有不同的外观和感觉。
我在问你是否可以在 mod_menu 模块上进行 2 种不同的模板覆盖。或者解决这个问题的最佳方法是什么?
感谢您的回答。
简短的回答是肯定的。将要覆盖的模块的 tmpl 文件夹中的所有 php 文件复制到模板中,就像覆盖一样。(所以你现在应该有 default、default_component、default_heading、default_separator 和 default_url templates/your_template/mod_menu/
)那是覆盖一个。
然后复制所有这些文件并将default
名称更改为与您的描述相匹配的另一个名称(尽管如果记忆对我有用,请不要使用任何数字,否则会破坏它,所以也许alternate
)。那就是你应该有alternate、alternate_component、alternate_heading、alternate_separator、alternate_url。在这组中,您还需要打开文件并搜索“default_”并替换为“alternate_”,以便正确连接。
最后,在您要使用替代布局的模块中,切换到选项选项卡,单击高级并从模块布局选项中选择“替代”以使用模板中定义的替代布局!
在您的情况下,最好的选择是在模块 xml 文件中设置模块参数选项。并有一个下拉选项,其中包含一些值,例如 menu1 、menu2 等。
安装您的模块,这将在模块管理器中提供参数,首先设置 menu1。
From module manager create new module -> 从列表中选择您的 mod_menu 并设置新位置或相同位置。并为此选择菜单参数作为menu2。
然后在您的模块 default.php 检查模块参数并根据您的要求加载不同的 css 甚至 html。
用于加载 css 你可以使用。
$doc = JFactory::getDocument();
$doc->addStyleSheet("full path");
用于在 xml 中设置模块参数
<fields name="params">
<fieldset name="basic">
<field
name="menutype"
type="list"
default="menu1"
label="Menu Type"
description="Choose Menu Type"
>
<option value="menu1">menu 1</option>
<option value="menu2">menu 2</option>
<option value="menu3">menu 3</option>
<option value="menu4">menu 4</option>
</field>
</fieldset>
</fields>
要在您的模块 default.php 中获取此值,请使用类似
$menutype = $params->get('menutype');
希望有意义..