Php 布局xml中的Magento条件块

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,但这不是您想要的 在您的情况下,我建议使用带有子块的主块,然后将您的条件语句放入主模板中,并使

如果isset get param x TH x.phtml else y.phtml,是否不可能或处于布局xml文件写入条件?我看到解决这个问题的行动控制器。但我覆盖了其他模块中的操作。我认为xml更好


事实上,我有一个注册表格,以会员计划从完成模块。我想覆盖此操作并显示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;
}