J'essaie d'obtenir le nom du jeu d'attributs dans le modèle de vue du produit Magento. Je peux obtenir la valeur d'attribut par $_product->getAttributeText('attribute')
, mais comment puis-je obtenir le nom du jeu d'attributs?
Je voudrais afficher un attribut uniquement s'il appartient à un certain ensemble d'attributs.
Chaque fois que vous avez un objet produit, vous pouvez accéder à ses attributs comme suit:
$attributeSetModel = Mage::getModel("eav/entity_attribute_set");
$attributeSetModel->load($product->getAttributeSetId());
$attributeSetName = $attributeSetModel->getAttributeSetName();
Cela vous donnera le nom de l'ensemble d'attributs, que vous pourrez ensuite comparer en utilisant strcmp:
if(0 == strcmp($attributeSetName, 'My Attribute Set')) {
print $product->getAttributeText('attribute');
}
J'espère que cela pourra aider!
Pour plus de sexualité, vous pouvez le raccourcir à:
$attributeSetName = Mage::getModel('eav/entity_attribute_set')->load($_product->getAttributeSetId())->getAttributeSetName();
Essayez le code suivant:
$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;
Vous trouverez plus d'informations sur l'ensemble d'attributs dans l'article suivant .
Merci
La réponse de Joe nécessite quelques modifications pour que cela fonctionne.
Premièrement, il devrait s'agir de $ _product not $ product, et deuxièmement, il y a un ')' erroné dans la dernière ligne.
Le code suivant devrait être correct:
$attributeSetModel = Mage::getModel("eav/entity_attribute_set");
$attributeSetModel->load($_product->getAttributeSetId());
$attributeSetName = $attributeSetModel->getAttributeSetName();
La comparaison avec une valeur de texte peut poser problème si les utilisateurs décident de modifier ultérieurement ce texte, ce qui est facile à faire dans Magento pour les ensembles d'attributs. Une autre option consiste à utiliser l'identifiant sous-jacent, qui ne changera jamais.
Vous pouvez l'obtenir en recherchant la valeur de la colonne attribute_set_id dans la base de données à l'aide de
select * from eav_attribute_set;
Ce numéro est également dans le lien de modification dans admin qui est en gras ci-dessous
http: //.../index.php/admin/catalog_product_set/edit/id/10/key/6fe89fe2221cf2f80b82ac2ae457909ce04c92c51716b3e474ecad672a2ae2f3 /
Votre code utiliserait alors simplement la propriété du produit. Base sur l'id de 10 dans le lien ci-dessus, cela ne serait que
if (10 == $_product->getAttributeSetId()) {
//Do work
}