Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Magento ->getSku() or getData(’sku’) returns empty string

Tags:

php

magento

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?

like image 752
Himberjack Avatar asked Aug 22 '10 11:08

Himberjack


2 Answers

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()

like image 91
Prattski Avatar answered Oct 16 '22 06:10

Prattski


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.

like image 25
Jonathan Day Avatar answered Oct 16 '22 08:10

Jonathan Day