Magento:在每个类别的基础上通过"自定义布局更新"XML设置变量?

Wac*_*Get 5 php magento magento-1.9

我希望能够使用显示在下面的"自定义布局更新"框来设置变量Manage Categories -> [Some Category] -> Custom Design,以指定可以在类别页面模板中使用的数据片段list.phtml.

到目前为止,我已尝试使用此:

<reference name="product_list">
    <action method="setData">
        <name>custom_banner_type</name>
        <value>single</value>
    </action>
    <action method="setData">
        <name>custom_banner_position</name>
        <value>3</value>
    </action>
</reference>
Run Code Online (Sandbox Code Playgroud)

但是当我echo $this->getData("custom_banner_type");在里面尝试时list.phtml,数据不可用.

我也试过在_beforeToHtml()函数内部获取数据List.php,模板的控制器,但这也没有做任何事情!

那么有什么方法可以使用自定义布局更新XML传递数据/变量?它必须通过那里完成,因为每个类别的数据都会改变,所以我不能使用硬编码的布局文件.

小智 9

你在做哪个布局句柄?catalog_category_viewcatalog_category_layered应该使用.也许您可以使用默认的Magento方式来设置XML数据.Magento使用set函数在xml中设置数据,我发现它比XML中的setData更具可读性.

例:

<catalog_category_view>
  <reference name="product_list">
    <action method="setCustomBannerType"><value>single</value></action>
    <action method="setCustomBannerPosition"><value>3</value></action>
  </reference>
</catalog_category_view>
Run Code Online (Sandbox Code Playgroud)

要检索您可以使用的数据,$this->getData('custom_banner_type');但也可以使用$this->getCustomBannerType();相同的数据.如果你想了解更多关于这一点,我建议你看一下魔术方法(http://php.net/manual/en/language.oop5.magic.php)

我不知道是否启用了缓存,如果这样刷新缓存并且它应该工作.