Magento - > getSku()或getData('sku')返回空字符串

时间:2010-08-22 11:17:52

标签: php magento

我有Magento 1.3.2,我有一个奇怪的问题:

当我在list.phtml时,我尝试使用getSku()getData('sku')来获取SKU,我会得到空字符串。 getName()确实有效。但是,当我从其他页面执行此操作时,它运行良好。

var_dump - 编辑并且没有显示SKU。

导致这种情况的原因是什么?

6 个答案:

答案 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。