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

发布于 2024-09-15 19:51:57 字数 270 浏览 8 评论 0原文

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

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

我对其进行了 var_dump 编辑,但未显示任何 SKU。

什么会导致这种情况?

I have Magento 1.3.2 and I have weird issue:

When I am in list.phtml, and I try to fetch the SKU by using getSku() or getData('sku') I get empty string. getName() does work. However, when I do that from other pages, it works well.

I var_dump-ed it and no SKU is shown.

What can cause this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

所有深爱都是秘密 2024-09-22 19:51:57

我很惊讶没有人给你最简单、最正确的答案:

转到你的管理员,目录>>>属性>>管理属性。然后编辑'sku'属性。将“用于产品列表”“否”更改为“是”。然后,您可以使用 ->getSku()list.phtml 中的产品对象访问它

I'm surprised nobody has given you the easiest and most proper answer yet:

Go to your admin, Catalog >> Attributes >> Manage Attributes. Then edit the 'sku' attribute. Change the "Used in Product Listing" from 'No' to 'Yes'. You will then have access to it from the product object in list.phtml with ->getSku()

梦屿孤独相伴 2024-09-22 19:51:57

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

$sku = Mage::getModel('catalog/product')->load($_product->getId())->getSku();

请注意,$_product 是您已经在集合中获取的内容,并注意 getSku 区分大小写(所有 Magento 属性 getter/setter 也是如此)。

@Prattski 的解决方案更可取,因为您真的不想弄乱加载/操作对象,但听起来您的集合有点混乱。 SKU 是catalog_product_entity 基表中存在的核心字段之一,因此不加载是不正常的。

The other option is to re-load the product object in the list.phtml using the ID of the product you already have. The code reads something a little like:

$sku = Mage::getModel('catalog/product')->load($_product->getId())->getSku();

Note that $_product is what you are getting in your collection already, and note that getSku is case sensitive (as are all Magento attributes getter/setters).

@Prattski's solution is preferable as you don't really want to be messing with loading/manipulating the objects, but it sounds as though your collection is a little messed up. SKU is one of the core fields that exists in the base catalog_product_entity table, so would be unusual not to be loaded.

噩梦成真你也成魔 2024-09-22 19:51:57

检索集合时,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 模板文件中访问。

Probably sku is not added to the list of attributes when a collection is retrieved. I assume you are talking a bout the file /template/catalog/product/list.phtml. If so, then you need to extend the corresponding code file (/app/code/core/Mage/Catalog/Block/Product/List.php).

I think your best bet is to overload the getLoadedProductCollection() method to:

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

This might not work, I have not been able to test it, as in my store the sku and all other attributes are accessible in the list.phtml template file.

流殇 2024-09-22 19:51:57

试试这个:

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

Try this:

<?php 
    $current_product = Mage::registry('current_product');
    if($current_product) {
        $sku = $current_product->getSku();
        // output sku
        echo $sku;
    }
?>
GRAY°灰色天空 2024-09-22 19:51:57

我也遇到了同样的问题,但尝试了 $_product['sku']
这对我有用

I had same problem too but tried $_product['sku']
it works for me

只是在用心讲痛 2024-09-22 19:51:57

$_product["sku"];足以获得产品 sku。

$_product["sku"]; enough to get the product sku.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文