我有Magento 1.3.2,我有一个奇怪的问题:
当我在list.phtml
时,我尝试使用getSku()
或getData('sku')
来获取SKU,我会得到空字符串。 getName()
确实有效。但是,当我从其他页面执行此操作时,它运行良好。
我var_dump
- 编辑并且没有显示SKU。
导致这种情况的原因是什么?
答案 0 :(得分:45)
我很惊讶没有人给你最简单和最恰当的答案:
转到您的管理员,目录>>属性>>管理属性。然后编辑'sku'属性。将“在产品列表中使用”从'否'更改为'是'。然后,您可以使用list.phtml
->getSku()
中的产品对象访问它
答案 1 :(得分:25)
另一个选项是使用您已有产品的ID重新加载list.phtml中的产品对象。代码读起来有点像:
$sku = Mage::getModel('catalog/product')->load($_product->getId())->getSku();
请注意,$ _product已经在您的集合中获得,并注意getSku区分大小写(所有Magento属性都是getter / setter)。
@ Prattski的解决方案是可取的,因为你真的不想弄乱加载/操纵对象,但听起来好像你的收藏有点搞砸了。 SKU是基础catalog_product_entity
表中存在的核心字段之一,因此不会被加载。
答案 2 :(得分:4)
检索集合时,可能不会将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模板文件中访问。
答案 3 :(得分:0)
试试这个:
<?php
$current_product = Mage::registry('current_product');
if($current_product) {
$sku = $current_product->getSku();
// output sku
echo $sku;
}
?>
答案 4 :(得分:-1)
我也有同样的问题,但尝试了$ _product ['sku'] 它对我有用
答案 5 :(得分:-3)
$ _产物[ “SKU”];足以得到产品sku。