'Evet / hayır' açılır özel ürün özelliğinin varsayılan değeri


10

Aşağıdaki komut dosyasıyla özelliği yüklüyorum:

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

Ayrıca denedi $installer = new Mage_Catalog_Model_Resource_Eav_Mysql4_Setup('core_setup');

Ve sonra başka bir kodda özniteliğin değerini kullanıyorum. Ama hep anlarım null. Ben, özniteliğin varsayılan bir değer ayarlanmadığını öğrendim. Bir ürünü açtığımda - açılır menü gösteriyor No, ancak koddaki değerini aldığımda null. Sadece açılır menüyü tıklarsam No, ürünü ayarlayıp kaydedersiniz - her şey işe yarar.

Bunun üstesinden nasıl gelinir?


bırakma / özellik oluşturma için magento.stackexchange.com/questions/12137/…
Amit Bera

Yanıtlar:


14

Varsayılan değeri dize olarak ayarlamaya çalışın

'default' => '0'

veya boş

'default' => ''

Güncelleme

Varsayılan değerler, etkilemediği eski ürünler için yeni ürün eklediğinizde eklenir.

Ürün yönetiminde toplu eylemle düzeltmeye çalışın

Ürünlerin yönetilmesi içinde “Güncelleme Özellikleri” adlı bir işlem var. Güncellemek istediğiniz tüm ürünleri seçin ve ardından Nitelikleri Güncelle'yi seçin ve tüm yeni bilgileri ekleyin.


1
Bunu zaten denedim ve çalışmıyor. :(
Syspect

3

Mevcut tüm varlık için değeri manuel olarak ayarlamanız gerekir:

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

kaynak: /programming/4906497/default-attribute-value-for-all-product-in-magento . Asrar Malik'in cevabına bakınız.


3

Yukarıdaki kod parçacıkları ile bir Evet / Hayır özniteliği yerine bir seçme özniteliği oluşturulan sorun vardı. Bunu düzeltmek için kullanmak zorunda kaldım

'input'             => 'boolean'

onun yerine:

'input'             => 'select'

0

Evet / hayır özniteliğine de varsayılan bir değer 0 ekleyemedim.

Bu nedenle varsayılan değeri 0 eklemek için bir olay kullandım

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

Yöntem:

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

Magento create modülüne yes / no özel niteliği eklemek için aşağıda gösterildiği gibi modül oluşturun.

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();
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.