Standardwert des benutzerdefinierten Produktattributs "Ja / Nein"

10

Ich installiere das Attribut mit dem folgenden Skript:

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

Auch mit versucht $installer = new Mage_Catalog_Model_Resource_Eav_Mysql4_Setup('core_setup');

Und dann verwende ich den Wert des Attributs in einem anderen Code. Aber ich bekomme immer null. Ich habe herausgefunden, dass für das Attribut kein Standardwert festgelegt wird. Wenn ich ein Produkt öffne No, wird das Dropdown-Menü angezeigt , aber wenn ich den Wert im Code erhalte , ist dies der Fall null. Wenn ich nur auf die Dropdown-Liste klicke, einfach Nodas Produkt einstellen und speichern - alles funktioniert.

Wie kann man das überwinden?

Syspect
quelle
Verwenden Sie
Amit Bera

Antworten:

14

Versuchen Sie, den Standardwert als Zeichenfolge festzulegen

'default' => '0'

oder leer

'default' => ''

Aktualisieren

Die Standardwerte werden hinzugefügt, wenn Sie ein neues Produkt für ein altes hinzufügen, das nicht betroffen ist.

Versuchen Sie, dies im Produktmanagement mit Massenaktionen zu beheben

Innerhalb von Produkten verwalten gibt es eine Aktion namens "Attribute aktualisieren". Wählen Sie alle Produkte aus, die Sie aktualisieren möchten, und wählen Sie dann Attribute aktualisieren aus, und fügen Sie alle neuen Informationen hinzu.

oleksii.svarychevskyi
quelle
1
Ich habe das schon versucht und funktioniert nicht. :(
Syspect
3

Sie sollten den Wert für alle vorhandenen Entitäten manuell festlegen:

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

Quelle: /programming/4906497/default-attribute-value-for-all-product-in-magento . Siehe Asrar Maliks Antwort.

Chuongnh
quelle
3

Ich hatte das Problem, dass mit den obigen Codefragmenten ein Auswahlattribut anstelle eines Ja / Nein-Attributs erstellt wurde. Um dies zu beheben, musste ich verwenden

'input'             => 'boolean'

anstatt:

'input'             => 'select'
ahe_borriglione
quelle
0

Ich konnte einem Ja / Nein-Attribut auch keinen Standardwert 0 hinzufügen.

Daher habe ich ein Ereignis verwendet, um den Standardwert 0 hinzuzufügen

<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>

Methode:

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
quelle
0

Zum Hinzufügen eines benutzerdefinierten Ja / Nein-Attributs zum Magento-Erstellungsmodul wie unten gezeigt.

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
quelle