Valore predefinito dell'attributo del prodotto personalizzato "Sì / No"


10

Installo l'attributo con il seguente script:

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

Anche provato con $installer = new Mage_Catalog_Model_Resource_Eav_Mysql4_Setup('core_setup');

E poi sto usando il valore dell'attributo in qualche altro codice. Ma ho sempre null. Ho scoperto che l'attributo non ottiene un valore predefinito. Quando apro un prodotto, viene visualizzato il menu a discesa No, ma quando ottengo il suo valore nel codice lo è null. Se faccio semplicemente clic sul menu a discesa, basta impostare Noe salvare il prodotto: tutto funziona.

Come superare questo?


per creare drop / attributo usare magento.stackexchange.com/questions/12137/…
Amit Bera

Risposte:


14

Prova a impostare il valore predefinito come stringa

'default' => '0'

o vuoto

'default' => ''

Aggiornare

I valori predefiniti vengono aggiunti quando si aggiungono nuovi prodotti per quelli vecchi che non influiscono.

Prova a risolverlo nella gestione dei prodotti con un'azione di massa

All'interno di gestire i prodotti, c'è un'azione chiamata "Aggiorna attributi". Seleziona tutti i prodotti che desideri aggiornare, quindi seleziona Aggiorna attributi e aggiungi tutte le nuove informazioni.


1
L'ho già provato e non funziona. :(
Syspect,

3

È necessario impostare manualmente il valore per tutte le entità esistenti:

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

fonte: /programming/4906497/default-attribute-value-for-all-product-in-magento . Vedi la risposta di Asrar Malik.


3

Ho avuto il problema che con i frammenti di codice sopra è stato creato un attributo select anziché un attributo yes / no. Per risolvere questo ho dovuto usare

'input'             => 'boolean'

invece di:

'input'             => 'select'

0

Non sono stato in grado di aggiungere un valore predefinito 0 a un attributo sì / no.

Pertanto ho usato un evento per aggiungere il valore predefinito 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>

Metodo:

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());
    }
}

0

Per aggiungere sì / no attributo personalizzato al modulo di creazione magento come mostrato di seguito.

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();
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.