Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Magento->;getSku()或getData(’;sku’;)返回空字符串_Php_Magento - Fatal编程技术网

Php Magento->;getSku()或getData(’;sku’;)返回空字符串

Php Magento->;getSku()或getData(’;sku’;)返回空字符串,php,magento,Php,Magento,我有Magento 1.3.2,我有一个奇怪的问题: 当我在list.phtml中,并且我尝试使用getSku()或getData('SKU')获取SKU时,我会得到空字符串getName()确实有效。但是,当我在其他页面上这样做时,效果很好 Ivar\u dump-ed它,不显示SKU 什么原因会导致这种情况?检索集合时,可能sku未添加到属性列表中。我假设您谈论的是文件/template/catalog/product/list.phtml。如果是这样,那么您需要扩展相应的代码文件(/app

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

当我在
list.phtml
中,并且我尝试使用
getSku()
getData('SKU')
获取SKU时,我会得到空字符串
getName()
确实有效。但是,当我在其他页面上这样做时,效果很好

I
var\u dump
-ed它,不显示SKU


什么原因会导致这种情况?

检索集合时,可能sku未添加到属性列表中。我假设您谈论的是文件/template/catalog/product/list.phtml。如果是这样,那么您需要扩展相应的代码文件(/app/code/core/Mage/Catalog/Block/Product/List.php)

我认为最好的办法是将getLoadedProductCollection()方法重载为:

public function getLoadedProductCollection()
    {
        return $this->_getProductCollection()->addAttributeToSelect('sku');
    }

这可能不起作用,我无法测试它,因为在我的商店中,可以在list.phtml模板文件中访问sku和所有其他属性。

另一个选项是使用您已有的产品ID在list.phtml中重新加载产品对象。代码读起来有点像:

$sku = Mage::getModel('catalog/product')->load($_product->getId())->getSku();
请注意,$\u产品是您在集合中已经得到的,并且请注意getSku是区分大小写的(所有Magento属性getter/setter也是如此)


@Prattski的解决方案更可取,因为您不想在加载/操作对象时弄乱,但听起来好像您的集合有点混乱。SKU是基本
目录\产品\实体
表中存在的核心字段之一,因此不加载是不寻常的

我很惊讶还没有人给你最简单、最恰当的答案:


转到管理员,目录>>属性>>管理属性。然后编辑“sku”属性。将“用于产品列表”从“否”更改为“是”。然后,您可以使用
->getSku()
列表中的product对象访问它。phtml
我也有同样的问题,但尝试了$\u product['sku'] 它适用于我

$\u产品[“sku”];足够获取产品sku。

请尝试以下操作:

<?php 
    $current_product = Mage::registry('current_product');
    if($current_product) {
        $sku = $current_product->getSku();
        // output sku
        echo $sku;
    }
?>


好主意,只是我在Checkout中需要它。很棒的解决方案,很多时候,Magento忽略了最简单的方法。谢谢谢谢。这应该是公认的解决方案,公认的解决方案会导致过载和性能问题。这可能是一个很好的解决方案,但我建议不要扩展类,而是为此使用事件观察程序(可能是
目录\块\产品\列表\集合
)。亲爱的未来读者,如果在foreach循环over集合中使用此解决方案,则会对性能产生相当大的影响。