2

所以我在这个模板中有一个 cms 块,它位于每个产品列表的一侧。

我在 CMS 块中有这段代码:

{{block type="core/template" name="some_unique_name" template="myfolder/my_dynamic_php_content.phtml"}}

这在 my_dynamic_php_content.phtml 中:

<?php echo $_product->getData('product_brand'); ?>

我得到了错误:

在第 1 行的 /home/magento/public_html/shorepowerinc.com/app/design/frontend/fortis/default/template/myfolder/my_dynamic_php_content.phtml 中的非对象上调用成员函数 getData()

我是新手,所以如果有人能解释这里发生了什么,我将不胜感激!

4

1 回答 1

2

这里缺少两件事;

1)您需要为当前产品加载模型,并且

2) 显示属性时使用了错误的语法。

要在您的块中加载当前产品模型,请将其添加到my_dynamic_php_content.phtml模板的顶部;

<?php       
   $_prodID = Mage::registry('current_product')->getId();
   $_product = Mage::getModel('catalog/product')->load($_prodID );
?> 

然后输出模板中的属性;

<?php echo $_product->getProduct_brand() ?>

(注意使用的是驼峰式,但如果您在设置属性时使用了下划线,请保留下划线)。

编辑

上面的答案将起作用,但下划线将由处理,Varien_Object::_underscore()流行的约定是使用 $_product->getData('product_brand') 或 $_product->getProductBrand()。感谢 Ben Marks 在下面的评论中提供此信息。

于 2012-12-04T19:13:40.187 回答