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

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

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

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

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

Ответы [ 6 ]

45 голосов
/ 25 августа 2010

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

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

25 голосов
/ 23 августа 2010

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

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

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

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

4 голосов
/ 22 августа 2010

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

0 голосов
/ 22 марта 2017

Попробуйте это:

<?php 
    $current_product = Mage::registry('current_product');
    if($current_product) {
        $sku = $current_product->getSku();
        // output sku
        echo $sku;
    }
?>
0 голосов
/ 02 июня 2015

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

0 голосов
/ 27 мая 2013

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...