2012-12-04 51 views
2

属性所以我在这个模板是对每一个产品上市的一侧的CMS块。调用的CMS块在Magento

我有这样的代码在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'); ?> 

和我得到的错误:

Call to a member function getData() on a non-object in /home/magento/public_html/shorepowerinc.com/app/design/frontend/fortis/default/template/myfolder/my_dynamic_php_content.phtml on line 1

我是那种的新手,所以如果任何人都可以解释这里发生了什么,我将不胜感激!

回答

2

两件事情从此却下落不明;

1)您需要加载模型您已经显示属性时使用了错误的语法当前产品和

2)。

要加载在你的块中的当前产品型号添加到您的my_dynamic_php_content.phtml模板的顶部;

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

然后到输出在模板中的属性; (请注意,它使用的是camelcase,但如果您在设置属性时使用了它,则保留下划线)。

编辑

以上回答可以工作,但下划线将Varien_Object::_underscore()处理和当时的约定是为使用$ _product->的getData( 'product_brand')或$ _product-> getProductBrand() 。感谢下面的评论中的Ben Marks获取此信息。

+0

感谢您的帮助:) – bwright

+0

没有probs在所有! :) – McNab

+1

如果我可能有点迂腐:它是由dev的,但底线是处理['Varien_Object :: _下划线()'](https://github.com/benmarks/magento-mirror/blob/ 1.7.0.2/lib/Varien/Object.php#L702),现行惯例是使用'$ _product-> getData('product_brand')'或'$ _product-> getProductBrand()'。 – benmarks