【问题标题】:Magento: setting variables via the "Custom Layout Updates" XML on a per-category basis?Magento:通过“自定义布局更新”XML 按类别设置变量?
【发布时间】:2014-09-26 01:37:27
【问题描述】:

我希望能够使用出现在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-&gt;getData("custom_banner_type"); 时,数据不可用。

我还尝试在模板的控制器 List.php 内的 _beforeToHtml() 函数中获取数据,但这也无济于事!

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

【问题讨论】:

  • 在此处查看此链接:magento.stackexchange.com/a/14605/395
  • @RohitS 谢谢,但这没有帮助。据我所知,我的语法是正确的,并且我使用了正确的方法。但是数据还是打不通。
  • 刷新缓存,var/cache/* 已经?

标签: php magento magento-1.9


【解决方案1】:

您在哪个布局句柄中执行此操作?应该使用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-&gt;getData('custom_banner_type');,也可以使用$this-&gt;getCustomBannerType();,这是相同的。如果您想了解更多信息,我建议您查看魔术方法 (http://php.net/manual/en/language.oop5.magic.php)

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

【讨论】:

  • 如果你已经在后台分类的自定义布局更新框中,是否需要句柄
猜你喜欢
  • 1970-01-01
  • 2015-01-16
  • 2012-02-18
  • 1970-01-01
  • 2015-05-24
  • 2019-03-14
  • 1970-01-01
  • 1970-01-01
  • 2012-07-20
相关资源
最近更新 更多