MAGexpert : les experts en développement Magento
7mar/120

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);
20fév/120

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,
));
19juil/110

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.

22mar/110

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