У меня Magento 1.3.2, и у меня возникает странная проблема:
Когда я нахожусь в list.phtml
, и я пытаюсь получить SKU с помощью getSku ()
или getData ('sku')
и получаю пустую строку. getName ()
работает. Однако, когда я делаю то же самое с других страниц, это работает хорошо.
Я var_dump
-редактировал его, и никакой SKU не отображается.
Что может вызвать это?
Другой вариант - повторно загрузить объект продукта в list.phtml, используя идентификатор продукта, который у вас уже есть. Код читается примерно так:
$sku = Mage::getModel('catalog/product')->load($_product->getId())->getSku();
Обратите внимание, что $ _product - это то, что вы уже получаете в своей коллекции, и обратите внимание, что getSku чувствителен к регистру (как и все методы получения и установки атрибутов Magento).
Решение @Prattski предпочтительнее, поскольку вы действительно не хотите возиться с загрузкой / манипулированием объектами, но похоже, что ваша коллекция немного испорчена. Артикул - одно из основных полей, которое существует в базовой таблице catalog_product_entity
, поэтому было бы необычно не загружаться.
Вероятно, артикул не добавляется в список атрибутов при получении коллекции. Я предполагаю, что вы говорите о файле /template/catalog/product/list.phtml. Если да, то вам необходимо расширить соответствующий файл кода (/app/code/core/Mage/Catalog/Block/Product/List.php).
Думаю, лучше всего перегрузить метод getLoadedProductCollection () следующим образом:
public function getLoadedProductCollection()
{
return $this->_getProductCollection()->addAttributeToSelect('sku');
}
Это может не сработать, я не смог его протестировать, так как в моем магазине артикул и все другие атрибуты доступны в списке .phtml файл шаблона.
Удивлен, что никто еще не дал вам самого простого и правильного ответа:
Зайдите в свою админку, Каталог >> Атрибуты >> Управление атрибутами. Затем отредактируйте атрибут 'sku'. Измените "Используется в списке продуктов" с "Нет" на "Да". Затем у вас будет доступ к нему из объекта продукта в list.phtml
с помощью ->getSku()