Valeur par défaut de l'attribut de produit personnalisé déroulant «oui / non»

10

J'installe l'attribut avec le script suivant:

$installer = $this;
$installer->startSetup();

$installer->removeAttribute('catalog_product', 'customizableonly');
$installer->addAttribute('catalog_product', 'customizableonly', array(
        'group'                     => 'General',
        'input'                     => 'select',
        'type'                      => 'int',
        'label'                     => 'Customizable Only',
        'source'                    => 'eav/entity_attribute_source_boolean',
        'global'                    => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
        'visible'                   => 1,
        'required'                  => 0,
        'visible_on_front'          => 0,
        'is_html_allowed_on_front'  => 0,
        'is_configurable'           => 0,
        'searchable'                => 0,
        'filterable'                => 0,
        'comparable'                => 0,
        'unique'                    => false,
        'user_defined'              => false,
        'default'           => 0,
        'is_user_defined'           => false,
        'used_in_product_listing'   => true
));

$this->endSetup();

A également essayé avec $installer = new Mage_Catalog_Model_Resource_Eav_Mysql4_Setup('core_setup');

Et puis j'utilise la valeur de l'attribut dans un autre code. Mais je reçois toujours null. J'ai découvert que l'attribut ne reçoit pas de valeur par défaut. Lorsque j'ouvre un produit - la liste déroulante s'affiche No, mais lorsque j'obtiens sa valeur dans le code, c'est null. Si je clique simplement sur la liste déroulante, il suffit de définir Noet d'enregistrer le produit - tout fonctionne.

Comment surmonter cela?

Syspect
la source
pour créer drop / attribut utiliser magento.stackexchange.com/questions/12137/…
Amit Bera

Réponses:

14

Essayez de définir la valeur par défaut sous forme de chaîne

'default' => '0'

ou vide

'default' => ''

Mettre à jour

Les valeurs par défaut sont ajoutées lorsque vous ajoutez un nouveau produit pour les anciens qu'il n'affecte pas.

Essayez de résoudre ce problème dans la gestion des produits avec une action de masse

À l'intérieur de la gestion des produits, il existe une action appelée «Mettre à jour les attributs». Sélectionnez tous les produits que vous souhaitez mettre à jour, puis sélectionnez Mettre à jour les attributs et ajoutez toutes les nouvelles informations dans.

oleksii.svarychevskyi
la source
1
J'ai déjà essayé ça et ça ne marche pas. :(
Syspect
3

Vous devez définir manuellement la valeur de toutes les entités existantes:

$productIds = Mage::getResourceModel('catalog/product_collection')
    ->getAllIds();

// Now create an array of attribute_code => values
$attributeData = array("my_attribute_code" =>"my_attribute_value");

// Set the store to affect. I used admin to change all default values
$storeId = 0; 

// Now update the attribute for the given products.
Mage::getSingleton('catalog/product_action')
    ->updateAttributes($productIds, $attributeData, $storeId);

source: /programming/4906497/default-attribute-value-for-all-product-in-magento . Voir la réponse d'Asrar Malik.

Chuongnh
la source
3

J'ai eu le problème avec les extraits de code ci-dessus, un attribut de sélection a été créé au lieu d'un attribut oui / non. Pour résoudre ce problème, j'ai dû utiliser

'input'             => 'boolean'

au lieu de:

'input'             => 'select'
ahe_borriglione
la source
0

Je n'ai pas pu ajouter une valeur par défaut 0 à un attribut oui / non également.

J'ai donc utilisé un événement pour ajouter la valeur par défaut 0

<frontend>
    <events>
        <customer_save_before>
            <observers>
                <xx_save_observer>
                    <type>singleton</type>
                    <class>xx/observer</class>
                    <method>customerSaveBefore</method>
                </xx_save_observer>
            </observers>
        </customer_save_before>
    </events>
</frontend>

Méthode:

public function customerSaveBefore(Varien_Event_Observer $observer)
{
    try {
        $customer = $observer->getCustomer();
        if (!$customer->getYourCustomAttribute()) {
            $customer->setYourCustomAttribute(0);
        }
    } catch ( Exception $e ) {
        Mage::log( "customer_save_before observer failed: ".$e->getMessage());
    }
}
ahe_borriglione
la source
0

Pour ajouter un attribut personnalisé oui / non au module de création magento comme indiqué ci-dessous.

http://www.pearlbells.co.uk/how-to-add-custom-attribute-dropdown-to-category-section-magento/

    <?php
$this->startSetup();
$this->addAttribute(Mage_Catalog_Model_Category::ENTITY, 'featured_product', array(
    'group'         => 'General Information',
    'input'         => 'select',
    'type'          => 'text',
    'label'         => 'Featured Product',
    'backend'       => '',
    'visible'       => true,
    'required'      => false,
    'visible_on_front' => true,
    'global'        => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
    'source' => 'eav/entity_attribute_source_boolean',
));

$this->endSetup();
user46226
la source