Récupérer la valeur d’un attribut Magento
Voici un petit bout de code pour récupérer la valeur d'un attribut :
$_product->getResource()->getAttribute('mon-attribut')->getFrontend()->getValue($_product);
Créer un jeu d’attribut produit sous Magento
De façon schématique, voici comment se compose un jeu d'attribut :
Mon jeu d'attribut
- Mon groupe d'attribut
- Mon attribut 1
- Mon attribut 2
- Mon attribut 3
Dans l'exemple ci-dessous, nous allons d'abord créer un jeu d'attribut de produit, auquel nous ajouterons par la suite un groupe d'attribut :
// Création d'une instance de la classe Mage_Eav_Model_Entity_Setup
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
// Création d'un jeu d'attribut
$setup->addAttributeSet('catalog_product', 'Mon jeu d`attribut');
// Création d'un groupe d'attributs et ajout dans le jeu d'attributs
$setup->addAttributeGroup('catalog_product', 'Mon jeu d`attribut', 'Mon groupe d`attribut', 1000);
// Création d'un nouvel attribut
$setup->addAttribute('catalog_product', 'mon_attribut', array(
'group' => 'Mon groupe d`attribut',
'input' => 'text',
'type' => 'text',
'label' => 'Mon attribut',
'backend' => '',
'visible' => 1,
'required' => 0,
'user_defined' => 1,
'searchable' => 1,
'filterable' => 0,
'comparable' => 1,
'visible_on_front' => 1,
'visible_in_advanced_search' => 0,
'is_html_allowed_on_front' => 0,
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
));
Ajouter un attribut à tous les jeux d’attributs
Vous venez de créer un attribut de produit mais votre boutique contient beaucoup de jeux d'attributs et il est fastidieux de l'affecter à tous.
Voici une requête SQL vous permettant de faire cette manipulation en une fois :
INSERT INTO `eav_entity_attribute` (entity_type_id,attribute_set_id,attribute_group_id,attribute_id) (SELECT 'ATTRIBUTE_ID' as entity_type_id,`attribute_set_id` ,`attribute_group_id`,`attribute_id` FROM `eav_attribute_group`,`eav_attribute` WHERE `attribute_group_name`='General' AND `attribute_code`='code_de_mon_attribut' )
Ici elle met l'attribut dont le code est code_de_mon_attribut dans tous les jeux dans le groupe General.
Ajouter un attribut sur un client Magento
Sur Magento 1.5.0.1, pour ajouter un attribut, vous devez avoir déjà votre module personnalisé sous la main.
Puis définir dans l'installeur l'action suivante :
$installer = $this; $installer--->startSetup();
$installer->addAttribute( 'customer', 'cdp', array(
'group' => 'Default',
'type' => 'text',
'input' => 'textarea',
'label' => 'Conditions particulières',
'source' => '',
'required' => false,
'visible' => true,
'user_defined' => true
)
);
Mage::getSingleton( 'eav/config' )
->getAttribute( 'customer', 'cdp' )
->setData( 'used_in_forms', array( 'adminhtml_customer' ) )
->save();
$installer->endSetup();
En cas d'erreur comme ceci :
Fatal error: Call to undefined method Mage_Core_Model_Resource_Setup::addAttribute() in mysql4-install-0.0.1.php on line 19
Ajoutez la bonne classe dans le setup de votre config.xml :
Mage_Eav_Model_Entity_Setup