我在网站上使用了2个不同的mod_menu实例:menu1和menu2。
根据图形设计,2个菜单具有不同的外观和感觉。
我问你是否可以在mod_menu模块上执行2个不同的模板覆盖。或者这个问题的最佳方法是什么?
感谢您的回答。
答案 0 :(得分:4)
简短的回答是肯定的。将所有要覆盖的模块的tmpl文件夹中的所有php文件复制到模板,就像覆盖一样。 (所以你现在应该在templates/your_template/mod_menu/
中有default,default_component,default_heading,default_separator和default_url)这是覆盖一个。
然后复制所有这些文件,并将名称中的default
更改为与您的描述相匹配的另一个名称(尽管如果内存为我服务,请不要使用任何数字,否则会破坏它,所以也许{{1 }})。那就是你应该有alternate,alternate_component,alternate_heading,alternate_separator,alternate_url。在此集合中,您还需要打开文件并搜索“default_”并替换为“alternate_”,以便正确连接。
最后,在您要使用备用布局的模块中,切换到选项选项卡,单击高级并从模块布局选项中选择“备用”以使用模板中定义的备用布局!
答案 1 :(得分:0)
在您的情况下,最好的选项是在模块xml文件中设置模块参数选项。 并有一个下拉选项,其中包含一些值,如menu1,menu2等。
安装你的模块,这将在模块管理器中给出params,首先设置menu1。
From模块管理器创建新模块 - >从列表中选择您的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');
希望它有意义......