Подтвердить что ты не робот

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

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

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

I var_dump -ed и не отображается SKU.

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

Я удивлен, что никто не дал вам самый простой и правильный ответ:

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

Ответ 3

Вероятно, 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.

Ответ 4

Попробуйте следующее:

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

Ответ 5

У меня тоже была проблема, но я попробовал $_product ['sku'] он работает для меня

Ответ 6

$_ произведение [ "ы" ]; достаточно, чтобы получить продукт sku.