我正在尝试创建自己的模块,我按照以下教程:LINK
文件“/modules/mod_hello_world2/mod_hello_world2.php”中的位于下面的代码中。
// get the items to display from the helper
$items = ModHelloWorld2Helper::getItems($userCount);
// include the template for display
require(JModuleHelper::getLayoutPath('mod_hello_world2'));
此代码显示'/modules/mod_hello_world2/tmpl/default.php'的内容,其中包含$ items解析的数据。
现在我想知道是否以及如何调用不同的模板文件。 我想为表单创建一个,为结果创建另一个。 由于最好将代码和HTML分开,我希望这样做。
非常欢迎任何帮助!
答案 0 :(得分:5)
JModuleHelper :: getLayoutPath有一个可选的布局参数。
http://api.joomla.org/Joomla-Framework/Application/JModuleHelper.html#getLayoutPath
所以......
require(JModuleHelper::getLayoutPath('mod_hello_world2', 'mylayout'));
答案 1 :(得分:4)
在你的mod_your_module.php中使用以下内容:
$layout = $params->get('layoutChoice');
require(JModuleHelper::getLayoutPath('mod_your_module', $layout ));
然后在你的mod_your_module.xml中写下这个:
<field name="layoutChoice" type="list" default="default" label="mod_layout_choice" description="mod_layout_choice_description" >
<option value="default">default</option>
<option value="default2">default2</option>
<option value="default3">default3</option>
<option value="default4">default4</option>
</field>
然后确保相应的文件default.php,default2.php,default3.php,default3.php在您的module / tmpl目录中。
该配置适用于Joomla 2.5。
以这种方式执行此操作,您可以从高级或基本部分中的模块的管理菜单中选择不同的模板,这取决于您在your_module.xml文件中的上述位置。
你可以在mod_your_module.xml文件中延长以上配置写入流程:
<field name="layoutChoice" type="list" default="default" label="MOD_LAYOUT_CHOICE" description="MOD_LAYOUT_CHOICE_DESC" >
<option value="default">MOD_LAYOUT_CHOICE_DEFAULT</option>
<option value="default2">MOD_LAYOUT_CHOICE_DEFAULT2</option>
<option value="default3">MOD_LAYOUT_CHOICE_DEFAULT3</option>
<option value="default4">MOD_LAYOUT_CHOICE_DEFAULT4</option>
</field>
然后在你的en-GB.mod_your_module.ini中写下:
MOD_LAYOUT_CHOICE="Choose which Template to Use"
MOD_LAYOUT_CHOICE_DESC="Your discription for each template is written hire"
MOD_LAYOUT_CHOICE_DEFAULT="First Template"
MOD_LAYOUT_CHOICE_DEFAULT2="Second Template"
MOD_LAYOUT_CHOICE_DEFAULT3="Third Template"
MOD_LAYOUT_CHOICE_DEFAULT4="Forth Template"