web-dev-qa-db-ja.com

magentoのすべての製品属性の配列を取得する

わからない!

製品属性のリストをlist.phtmlページの配列に取得しようとしています。私はすべてを試しました。私はを使用する多くのソリューションを見てきました

$attributes = $product->getAttributes();

しかし、これを機能させることはできません。空白のページが表示されるだけです。これまで何時間も費やしてきました...

Magentoバージョン1.4.2.0を使用しています

更新:これが私がやろうとしていることです:

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

これは、design/adminhtml/default/default/catalog/product/helper /のgallery.phtmlファイルにあります

何らかの理由で、getAttributeCode関数に何も返させません。

13
Chad

目に見える値のみのリストが必要だと思います。属性は実際の値ではなく、記述子であるため、「値」と言います。以下は、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
    }
}

ただし、製品ビューページでattributesブロックとしてすでに宣言されているテンプレートcatalog/product/view/attributes.phtmlを変更/使用できるため、これを複製する必要はありません。

23
clockworkgeek

あなたの質問によると、代わりに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_(getData())ストレージに属性があるとは限りません。また、属性を取得するために製品をロードする必要はありません。

14
nevvermind

それはかなり簡単で、利用可能な製品属性名の配列を提供します

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

属性オブジェクトコレクションが必要な場合は、

$product->getAttributes();

製品コレクションが必要な場合は、その後、各コレクションメンバーで前述の方法を実行できます。

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