2011-02-10 16 views
13

私はこれを理解できません!すべての商品属性の配列をマゼンタで取得

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 /デフォルト/デフォルト/カタログ/製品/ヘルパー/

何らかの理由で、私はgetAttributeCode機能は何かを返すように取得することはできません。

+0

最初に商品コレクションを取得しようとしましたか? – kjy112

+1

XDebugのようなデバッガでステップバイステップのデバッグを使用しましたか? – greg0ire

+1

特定の製品の属性値、またはすべての属性コードのリストを尋ねていますか? –

答えて

23

私はあなたに可視値のリストが必要だと思います。私は属性が実際の値ではないので "値"と言います、それらは記述子です。 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を使用することができますので、このかかわらずを複製する必要はありません。あなたは常に_datagetData())ストレージの属性を持っていない、あなたは常に取得するために製品をロードする必要はありません

$productAttrs = Mage::getResourceModel('catalog/product_attribute_collection'); 

foreach ($productAttrs as $productAttr) { /** @var Mage_Catalog_Model_Resource_Eav_Attribute $productAttr */ 
    var_dump($productAttr->getAttributeCode()); 
} 

を:あなたの質問によると、あなたが代わりにMage::getResourceModel('catalog/product_attribute_collection')を使用する必要があります

+0

これは素晴らしく、フロントエンドで動作しますが、これはギャラリーgallery.pのhtmlのデザイン/ adminhtml/default/default/catalog/product/helper/- 任意のアイデア?それは同じ方法で製品の変数を得ることができないようです – Chad

+0

私は私の元の投稿でやろうとしているものを正確に投稿しました。あなたが助けることを願っています! – Chad

+0

'Mage :: getModel( 'catalog/product')'で空白の製品を作成すると、実際には製品の値は必要ないので動作しますか?これは異なる属性セットを尊重しないかもしれませんが、私はそれをどのように見つけ出すのか分かりません。 – clockworkgeek

6

それはかなり簡単です、あなたに利用可能な製品の配列を与える属性名

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

あなたは属性オブジェクトのコレクションが必要な場合は、製品の収集とその後に必要がある場合は

$product->getAttributes(); 

を呼び出すことができます各コレクションメンバーで前述の方法を実行できます

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

これは、 "Used in Product Listing">属性設定でYesを設定する必要があることにも注意してください。 –

+0

この配列を取得しています[0] =>配列 ( [entity_id] => 12 [entity_type_id] => 4 [attribute_set_id] => 4 [TYPE_ID] =>簡単 [SKU] => 20707 [has_options] => 1 [required_options] => 1 【のcreated_at] => 2016年1月6日21:15 :31 [updated_at] => 2016-10-03 00:49:21 )名前、商品画像、説明などの追加属性を取得するにはどうすればよいですか –

14

その属性。

+1

選択のためのフレンドリーな配列の要点。 https://gist.github.com/jruzafa/8776453a13717ff7b5a1 – jruzafa

+0

ありがとうございました! –

関連する問題