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

时间:2014-09-26 01:37:28

标签: 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>

但是当我在echo $this->getData("custom_banner_type");内尝试list.phtml时,数据无法使用。

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

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

1 个答案:

答案 0 :(得分:8)

你在做哪个布局句柄?应使用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>

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

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