Magento → getSku() или getData (sku) возвращает пустую строку
У меня есть Magento 1.3.2, и у меня есть странная проблема:
Когда я нахожусь в list.phtml
, и я пытаюсь получить SKU с помощью getSku()
или getData('sku')
, я получаю пустую строку. getName()
действительно работает. Однако, когда я делаю это с других страниц, он работает хорошо.
I var_dump
-ed и не отображается SKU.
Что может вызвать это?
Ответы
Ответ 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.