我有Magento的1.3.2和我有奇怪的问题:的Magento - > getSku()或的getData(“SKU”)返回空字符串
当我在list.phtml
,我尝试使用,以获取SKU getSku()
或getData('sku')
我得到空字符串。 getName()
确实有效。但是,当我从其他页面执行此操作时,它运行良好。
我var_dump
- 它并没有显示SKU。
这是什么原因造成的?
我有Magento的1.3.2和我有奇怪的问题:的Magento - > getSku()或的getData(“SKU”)返回空字符串
当我在list.phtml
,我尝试使用,以获取SKU getSku()
或getData('sku')
我得到空字符串。 getName()
确实有效。但是,当我从其他页面执行此操作时,它运行良好。
我var_dump
- 它并没有显示SKU。
这是什么原因造成的?
另一种选择是使用您已拥有的产品的ID重新加载list.phtml中的产品对象。该代码读取的东西有点像:
$sku = Mage::getModel('catalog/product')->load($_product->getId())->getSku();
注意,$ _产品是你在你的收藏中得到什么已经,并注意getSku是区分大小写(因为都是Magento的属性的getter/setter方法)。
@Prattski的解决方案是可取的,因为你并不真正想要加载/操作对象,但听起来好像你的集合有点搞砸了。 SKU是表catalog_product_entity
表中存在的核心字段之一,因此不常见,不会被加载。
在检索集合时,可能不会将sku添加到属性列表中。我假设你正在讨论文件/template/catalog/product/list.phtml。如果是这样,那么你需要扩展相应的代码文件(/app/code/core/Mage/Catalog/Block/Product/List.php)。
我认为最好的方法是重载getLoadedProductCollection()方法:
public function getLoadedProductCollection()
{
return $this->_getProductCollection()->addAttributeToSelect('sku');
}
这可能不行,我一直无法对其进行测试,因为在我的商店的SKU和所有其他属性可以在list.phtml模板文件中访问。
这可能是一个很好的解决方案,但我建议不要延长类,而是使用事件观察这个(也许'catalog_block_product_list_collection')。 – mkutyba 2017-03-04 16:29:08
我很惊讶,没有人给你最简单,最恰当的答案了:
转到您的管理员,目录>>属性>>管理属性。然后编辑'sku'属性。更改“用于产品清单”从'否'至'是'。那么你将不得不从list.phtml
产品对象访问它与->getSku()
他们在那里展示。 getSku()只是不起作用。 – Himberjack 2010-08-26 06:15:38
这完全是我的问题,谢谢。 – UltimateBrent 2013-04-04 19:13:52
不错的想法,只是我需要它在结帐 – 2013-07-10 06:09:49
我有同样的问题太多,但尝试$ _product [“SKU”] 它为我工作
$ _product [“SKU”];足以获得产品sku。
试试这个:
<?php
$current_product = Mage::registry('current_product');
if($current_product) {
$sku = $current_product->getSku();
// output sku
echo $sku;
}
?>
亲爱的未来读者们,如果在foreach循环中使用这个解决方案,它会对性能造成相当大的影响。 – mkutyba 2017-03-04 16:32:54