2010-01-19 29 views
29

Ich versuche, Attribut Set Name in Magento Produktansicht Vorlage zu bekommen. Ich kann Attributwert von $_product->getAttributeText('attribute') erhalten, aber wie bekomme ich Attributsatzname?Wie bekomme ich den Attributsatznamen?

Ich möchte ein Attribut nur anzeigen, wenn es zu einem bestimmten Attributsatz gehört.

Antwort

66

Jedes Mal, wenn Sie ein Produkt zum Gegenstand haben, können Sie das Attribut wie folgt festgelegt Zugang:

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

Dies gibt Ihnen den Namen des Attributs festgelegt, die Sie dann mit strcmp vergleichen kann:

if(0 == strcmp($attributeSetName, 'My Attribute Set')) { 
    print $product->getAttributeText('attribute'); 
} 

Hoffe, dass hilft!

+0

Ein anonymer Benutzer bot einen Bearbeitungsvorschlag an und korrigierte '$ attributeSet' zu' # attributeSetName'. Es sah vernünftig aus, und deshalb stimmte ich ihm zu. Allerdings kenne ich diese Sprache nicht, also überprüfe, ob sie korrekt ist. – abcd

+0

Die letzte Zeile sollte lauten: '$ attributeSetName = $ attributSetModel-> getAttributeSetName();' ohne ')' am Ende – Yeroon

+0

Seltsame Wahl der Funktion strcmp? Warum nicht den direkten Vergleich mit === verwenden? –

1

Joes Antwort erfordert ein paar Änderungen, damit es funktioniert.

Erstens sollte es $ _product nicht $ product sein, und zweitens gibt es ein fehlerhaftes ')' in der letzten Zeile.

Der folgende Code sollte korrekt sein:

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

Weitere sexyness Sie es verkürzen

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

finden weitere Informationen über Attribut festgelegt in following article.

Dank

13

Versuchen Sie, den folgenden Code:

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

auf einen Textwert Beim Vergleich können Probleme auftreten, wenn Benutzer später entscheiden, dass der Text geändert werden - was in Magento zu tun für Attribut-Sets einfach ist. Eine andere Möglichkeit besteht darin, stattdessen die zugrundeliegende ID zu verwenden, die sich niemals ändern wird.

Sie können diese erhalten, indem Sie den Wert der attribute_set_id Spalte in der Datenbank

select * from eav_attribute_set; 

Diese Zahl ist auch im Bearbeitungs Link im Admin mit aufzublicken, die unter

fett gedruckt ist

http://.../index.php/admin/catalog_product_set/edit/id//key/6fe89fe2221cf2f80b82ac2ae457909ce04c92c51716b3e474ecad672a2ae2f3/

Ihr Code würde dann einfach diese Eigenschaft des Produkts verwenden. Basis auf der ID 10 im obigen Link wäre nur

if (10 == $_product->getAttributeSetId()) { 
    //Do work 
}