2011-11-11 10 views
3

マルチウェブサイト/マルチストアサイトの別のスコープで指定された属性の値にアクセスする必要があります。特に、ストアのラベルが設定されている場合、属性のAdmin(デフォルト)ラベルをフロントエンドに表示する必要があります。異なるスコープからMagento Modelデータにアクセスする方法

enter image description here

ように、コードは、ページの一部のAdmin列、およびページの別の部分に英語(US)からのテキスト記述から六角値をレンダリングする必要があります。それ、どうやったら出来るの?

逆に、ストアビューに値が設定されていても、デフォルトではnullになっていて、ストアが設定されていてもコードがnullを返すインスタンスがあります。誰かがその仕組みを説明できますか?ここで

答えて

6

は、Magentoのクラスを使用してそれを行う方法です。必要に応じて

// Get the model of the attribute in question 
/* @var $attribute Mage_Catalog_Model_Resource_Eav_Attribute */ 
$attribute = Mage::getSingleton('eav/config')->getAttribute('catalog_product', 'color'); 

// Load the option collection for that attribute adding the storeFilter() 
/* @var $collection Mage_Eav_Model_Resource_Entity_Attribute_Option_Collection */ 
$collection = Mage::getResourceModel('eav/entity_attribute_option_collection') 
     ->setPositionOrder('asc') 
     ->setAttributeFilter($attribute->getId()) 
     ->setStoreFilter(); 

// Load the product so we can get the correct option from the collection 
$product = Mage::getModel('catalog/product')->load(39); 
$productOption = $collection->getItemById($product->getColor()); 

printf("Default: %s, Store: %s\n", $productOption->getDefaultValue(), $productOption->getValue()); 

を調整します。

+0

ありがとうございました。エレガントでよく書かれています。私は製品に全面的な負荷をかけないようにしたいので、config.xmlのデフォルトのコレクション属性に属性を追加すると思います。また、属性オプションのコレクションはキャッシュされていますか? –

+1

属性の 'used_in_product_listing'プロパティを設定するだけで十分なデータがある場合は、config.xmlに追加する必要はありません。 – Vinai

+0

オプション収集データは、デフォルトではキャッシュされません。あなたはコレクションキャッシングを使って素早くそれを実装することができますhttp://tweetorials.tumblr.com/post/10203426431/magento-block-caching – Vinai

関連する問題