Magento -> getSku () или getData ('sku') возвращает пустую строку

У меня Magento 1.3.2, и у меня возникает странная проблема:

Когда я нахожусь в list.phtml , и я пытаюсь получить SKU с помощью getSku () или getData ('sku') и получаю пустую строку. getName () работает. Однако, когда я делаю то же самое с других страниц, это работает хорошо.

Я var_dump -редактировал его, и никакой SKU не отображается.

Что может вызвать это?

16
задан 7ochem 14 July 2016 в 14:55
поделиться

3 ответа

Другой вариант - повторно загрузить объект продукта в list.phtml, используя идентификатор продукта, который у вас уже есть. Код читается примерно так:

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

Обратите внимание, что $ _product - это то, что вы уже получаете в своей коллекции, и обратите внимание, что getSku чувствителен к регистру (как и все методы получения и установки атрибутов Magento).

Решение @Prattski предпочтительнее, поскольку вы действительно не хотите возиться с загрузкой / манипулированием объектами, но похоже, что ваша коллекция немного испорчена. Артикул - одно из основных полей, которое существует в базовой таблице catalog_product_entity , поэтому было бы необычно не загружаться.

25
ответ дан 30 November 2019 в 15:09
поделиться

Вероятно, артикул не добавляется в список атрибутов при получении коллекции. Я предполагаю, что вы говорите о файле /template/catalog/product/list.phtml. Если да, то вам необходимо расширить соответствующий файл кода (/app/code/core/Mage/Catalog/Block/Product/List.php).

Думаю, лучше всего перегрузить метод getLoadedProductCollection () следующим образом:

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

Это может не сработать, я не смог его протестировать, так как в моем магазине артикул и все другие атрибуты доступны в списке .phtml файл шаблона.

4
ответ дан 30 November 2019 в 15:09
поделиться

Удивлен, что никто еще не дал вам самого простого и правильного ответа:

Зайдите в свою админку, Каталог >> Атрибуты >> Управление атрибутами. Затем отредактируйте атрибут 'sku'. Измените "Используется в списке продуктов" с "Нет" на "Да". Затем у вас будет доступ к нему из объекта продукта в list.phtml с помощью ->getSku()

46
ответ дан 30 November 2019 в 15:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: