3

我想在布局 xml 中为 ifconfig 指定多个值。

<action method="setTemplate" ifconfig="mymodule/general/is_enabled">
    <template>mymodule/test.phtml</template>
</action>

是否可以为一项操作添加以下两个条件?

ifconfig="mymodule/general/is_enabled"
ifconfig="mymodule/frontend/can_show"

任何建议都将受到欢迎。

4

4 回答 4

4

您可以在操作参数中使用辅助方法。像这样的东西

<action method="setTemplate">
    <template helper="mymodule/myhelper/canShowIf"/>
</action>

将使用调用结果调用 setTemplate

Mage::helper('mymodule/myhelper')->canShowIf();

以及您的模块默认助手中的以下内容:

public function canShowIf()
{
    if($displayOnly = Mage::getStoreConfig('mymodule/general/is_enabled') == true)

    // Do Something

    }else if($displayOnly = Mage::getStoreConfig('mymodule/frontend/can_show') == true)         {

    // Do Something Else

   }
    return $displayOnly;
}

在canShowIf中实现您的自定义逻辑。

于 2014-01-02T12:11:53.600 回答
1

在 Helper (Data.php) 中定义一个函数

  <reference name="root">
    <action method="setTemplate">
       <template helper="modulename/getNewLayoutupdate"/>
    </action>
  </reference>

在辅助函数中,您可以按条件加载模板。

于 2014-01-02T12:12:33.703 回答
0

ifconfig="mymodule/general/is_enabled" ifconfig="mymodule/frontend/can_show"

为什么不创建一个额外的配置节点 ifconfig="mymodule/frontend/is_enabled_can_show" 并根据这个值继续。

于 2014-01-02T13:07:39.017 回答
0

考虑以下场景:

<catalog_category_default>
      <reference name="product_list">
          <action method="setTemplate" >
              <template>mymodule/mytemplate.phtml</template>
          </action>
     </reference>
</catalog_category_default>

ifconfig :如果返回值为 false,则采用基本文件夹中定义的布局。

辅助函数:如果返回值为 false,则不采用基本文件夹中定义的布局,也不会添加模板。这就是显示空块的原因。

于 2014-01-02T13:16:55.190 回答