web-dev-qa-db-ja.com

属性セット名を取得するにはどうすればよいですか?

Magento製品ビューテンプレートで属性セット名を取得しようとしています。 $_product->getAttributeText('attribute')で属性値を取得できますが、属性セット名を取得するにはどうすればよいですか?

特定の属性セットに属している場合にのみ、属性を表示したいと思います。

29
Moon

製品オブジェクトがある場合は、次のようにその属性セットにアクセスできます。

$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');
}

お役に立てば幸いです!

70
Joseph Mastey

よりセクシーにするには、次のように短縮できます。

$attributeSetName = Mage::getModel('eav/entity_attribute_set')->load($_product->getAttributeSetId())->getAttributeSetName();
24
trish

次のコードを試してください:

$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;

属性セットの詳細については、 次の記事 をご覧ください。

ありがとう

13
MagePsycho

ジョーの答えは、機能するためにいくつかの変更が必要です。

まず、$ productではなく$ _productである必要があります。次に、最後の行に誤った ')'があります。

次のコードが正しいはずです。

$attributeSetModel = Mage::getModel("eav/entity_attribute_set");
$attributeSetModel->load($_product->getAttributeSetId());
$attributeSetName = $attributeSetModel->getAttributeSetName();
1
Bit32

ユーザーがそのテキストを後で変更することを決定した場合、テキスト値との比較に問題が生じる可能性があります。これは、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
}
0
Andrew Rutter