Frage

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 versucht mit $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 das Attribut keinen Standardwert festlegt. Wenn ich ein Produkt öffne, zeigt der Dropdown No, aber wenn ich seinen Wert im Code bekomme, ist es null. Wenn ich einfach auf den Dropdown klicke, stellen Sie einfach fest No Und speichern Sie das Produkt - alles funktioniert.

Wie kann man das überwinden?

War es hilfreich?

Lösung

Versuchen Sie, den Standardwert als Zeichenfolge festzulegen

'default' => '0'

oder leer

'default' => ''

Aktualisieren

Die Standardwerte werden hinzugefügt, wenn Sie neues Produkt für alte hinzufügen, die sie nicht beeinflussen.

Versuchen Sie, dies im Produktmanagement mit Massenaktion zu beheben

Innerhalb von Produkten verwalten Sie Produkte, gibt es eine Aktion mit dem Titel „Aktualisierungsattribute“. Wählen Sie alle Produkte aus, die Sie aktualisieren möchten, und wählen Sie dann Aktualisierungsattribute aus und fügen Sie alle neuen Informationen hinzu.

Andere Tipps

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: https://stackoverflow.com/questions/4906497/default-attribute-value-for-all-product-in-magento. Siehe Asrar Maliks Antwort.

Ich hatte das Problem, dass mit den Code-Ausschnitten über einer Select-Attribute anstelle eines Ja/Nein-Attributs erstellt wurde. Um dies zu beheben, musste ich verwenden

'input'             => 'boolean'

Anstatt von:

'input'             => 'select'

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

Zum Hinzufügen von Ja/Nein -benutzerdefinierten Attribut zu Magento erstellen Sie das Modul 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();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top