Php 布局xml中的Magento条件块
如果isset get param x TH x.phtml else y.phtml,是否不可能或处于布局xml文件写入条件?我看到解决这个问题的行动控制器。但我覆盖了其他模块中的操作。我认为xml更好Php 布局xml中的Magento条件块,php,magento,magento-1.7,Php,Magento,Magento 1.7,如果isset get param x TH x.phtml else y.phtml,是否不可能或处于布局xml文件写入条件?我看到解决这个问题的行动控制器。但我覆盖了其他模块中的操作。我认为xml更好 事实上,我有一个注册表格,以会员计划从完成模块。我想覆盖此操作并显示2张表单中的1张。根据get param value中的内容。我知道在configs中执行if语句的唯一方法是使用ifconfig,但这不是您想要的 在您的情况下,我建议使用带有子块的主块,然后将您的条件语句放入主模板中,并使
事实上,我有一个注册表格,以会员计划从完成模块。我想覆盖此操作并显示2张表单中的1张。根据get param value中的内容。我知道在configs中执行if语句的唯一方法是使用
ifconfig
,但这不是您想要的
在您的情况下,我建议使用带有子块的主块,然后将您的条件语句放入主模板中,并使用$this->getChildHtml('child_name')
。这样,您就可以将您的逻辑放在模板中,而不会污染您的配置(我认为可能有一种方法)
配置:
<block type="core/template" name="master_block" template="folder/path/master_block.phtml">
<block type="core/template" name="sub_block_form1" template="folder/path/form1.phtml" />
<block type="core/template" name="sub_block_form2" template="folder/path/form2.phtml" />
</block>
实现这一点的最佳方法是创建自己的模块并在XML中添加块,如下所示:
<block type="mymodule/someblock" name="my_block" as="myBlock" />
public function __construct() {
parent::__construct();
if($some_value == 'something') {
$this->setTemplate('mymodule/first-template.phtml');
} else {
$this->setTemplate('mymodule/second-template.phtml');
}
}
public function getTemplate($defaultTemplate){
//check for your get params
if(Mage::app()->getRequest()->getParam('x')){
return 'x.phtml';
}
return $defaultTemplate;
}
当然,您将用您需要的任何“if”语句替换该“if”语句。有一种方法可以使用几乎纯xml实现这一点: 背景:
您可以从xml调用函数,它将返回值而不是静态值 因此,在您的情况下,您可以对xml执行类似的操作,以归档所需的行为:
<reference name="your-block-name">
<action method="setTemplate">
<template helper="your_module/getTemplate">
<param>a_default_template_if_wanted</param>
</template>
</action>
</reference>
比我的答案更清晰。相关:
public function getTemplate($defaultTemplate){
//check for your get params
if(Mage::app()->getRequest()->getParam('x')){
return 'x.phtml';
}
return $defaultTemplate;
}