Magento:通过“;自定义布局更新“;基于每个类别的XML


Magento: setting variables via the "Custom Layout Updates" XML on a per-category basis?

我希望能够使用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>

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

我还尝试过在List.php(模板的控制器)中的_beforeToHtml()函数中获取数据,但这也没有任何作用!

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

您在哪个布局句柄中执行此操作?应使用CCD_ 7和CCD_。也许您可以使用默认的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>

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

我不知道是否启用了缓存,如果启用了,请刷新缓存,它应该可以工作。