получить массив всех атрибутов продуктов в magento

Я не могу понять это!

Я пытаюсь получить список атрибутов продуктов в массив на странице list.phtml. Я все пробовал. Я видел много решений, которые используют

$attributes = $product->getAttributes(); 

но я не могу заставить это работать, он просто выводит пустую страницу. Любая помощь будет принята с благодарностью, я потратил часы и часы на это до сих пор …

Я использую Magento версии 1.4.2.0

UPDATE: Вот что я пытаюсь сделать:

 $neededAttributes = Mage::helper('mymodule')->getNeededAttributes(); $attributes = $product->getAttributes(); foreach ($attributes as $attribute) { if(in_array($attribute->getAttributeCode(), $neededAttributes)) { $attributename = $attribute->getAttributeCode(); echo $attributename; } } 

это находится в файле gallery.phtml в проекте / adminhtml / default / default / catalog / product / helper /

По какой-то причине я не могу заставить функцию getAttributeCode возвращать что-либо.

Я предполагаю, что вам нужен список только видимых значений. Я говорю «значения», потому что атрибуты не являются фактическими значениями, они являются дескрипторами. Ниже перечислены основные части из Mage_Mage_Catalog_Block_Product_View_Attributes :

 $attributes = $product->getAttributes(); foreach ($attributes as $attribute) { if ($attribute->getIsVisibleOnFront()) { $value = $attribute->getFrontend()->getValue($product); // do something with $value here } } 

Вам не нужно дублировать это, так как вы можете изменить / использовать catalog/product/view/attributes.phtml шаблонов catalog/product/view/attributes.phtml который уже объявлен на странице просмотра продукта как блок attributes .

Согласно вашему вопросу, вы должны использовать Mage::getResourceModel('catalog/product_attribute_collection') вместо этого:

 $productAttrs = Mage::getResourceModel('catalog/product_attribute_collection'); foreach ($productAttrs as $productAttr) { /** @var Mage_Catalog_Model_Resource_Eav_Attribute $productAttr */ var_dump($productAttr->getAttributeCode()); } 

У вас не всегда есть атрибуты в _data ( _data ( getData() ), и вам не всегда нужно загружать продукт для получения его атрибутов.

Это довольно легко и дает вам массив доступных имен атрибутов продукта

 $product = Mage::getModel('catalog/product')->load('product_id'); $attributeNames = array_keys($product->getData()); print_r($attributeNames); 

Если вам нужна коллекция объектов атрибутов, вы можете позвонить

 $product->getAttributes(); 

Если вам нужна коллекция продуктов, и после этого вы можете выполнить вышеупомянутые способы для каждого члена коллекции

 Mage::getModel('catalog/product')->getCollection();