Magento製品ビューテンプレートで属性セット名を取得しようとしています。 $_product->getAttributeText('attribute')
で属性値を取得できますが、属性セット名を取得するにはどうすればよいですか?
特定の属性セットに属している場合にのみ、属性を表示したいと思います。
製品オブジェクトがある場合は、次のようにその属性セットにアクセスできます。
$attributeSetModel = Mage::getModel("eav/entity_attribute_set");
$attributeSetModel->load($product->getAttributeSetId());
$attributeSetName = $attributeSetModel->getAttributeSetName();
これにより、属性セットの名前が表示され、strcmpを使用して比較できます。
if(0 == strcmp($attributeSetName, 'My Attribute Set')) {
print $product->getAttributeText('attribute');
}
お役に立てば幸いです!
よりセクシーにするには、次のように短縮できます。
$attributeSetName = Mage::getModel('eav/entity_attribute_set')->load($_product->getAttributeSetId())->getAttributeSetName();
次のコードを試してください:
$entityTypeId = Mage::getModel('eav/entity')
->setType('catalog_product')
->getTypeId();
$attributeSetName = 'Default';
$attributeSetId = Mage::getModel('eav/entity_attribute_set')
->getCollection()
->setEntityTypeFilter($entityTypeId)
->addFieldToFilter('attribute_set_name', $attributeSetName)
->getFirstItem()
->getAttributeSetId();
echo $attributeSetId;
属性セットの詳細については、 次の記事 をご覧ください。
ありがとう
ジョーの答えは、機能するためにいくつかの変更が必要です。
まず、$ productではなく$ _productである必要があります。次に、最後の行に誤った ')'があります。
次のコードが正しいはずです。
$attributeSetModel = Mage::getModel("eav/entity_attribute_set");
$attributeSetModel->load($_product->getAttributeSetId());
$attributeSetName = $attributeSetModel->getAttributeSetName();
ユーザーがそのテキストを後で変更することを決定した場合、テキスト値との比較に問題が生じる可能性があります。これは、Magentoで属性セットに対して簡単に実行できます。他のオプションの1つは、代わりに基になるIDを使用することです。
これを取得するには、データベースのattribute_set_id列の値を検索します
select * from eav_attribute_set;
この番号は、以下の太字で示されているadminの編集リンクにもあります。
http://.../index.php/admin/catalog_product_set/edit/id/10/ key/6fe89fe2221cf2f80b82ac2ae457909ce04c92c51716b3e474ecad672a2ae2f3 /
コードは、製品のそのプロパティを使用するだけです。上記のリンクのID 10に基づいて、
if (10 == $_product->getAttributeSetId()) {
//Do work
}