Giá trị mặc định của thuộc tính sản phẩm tùy chỉnh thả xuống 'có / không'


10

Tôi cài đặt thuộc tính với đoạn script sau:

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

Cũng đã thử với $installer = new Mage_Catalog_Model_Resource_Eav_Mysql4_Setup('core_setup');

Và sau đó tôi đang sử dụng giá trị của thuộc tính trong một số mã khác. Nhưng tôi luôn luôn nhận được null. Tôi phát hiện ra rằng, thuộc tính không được đặt giá trị mặc định. Khi tôi mở một sản phẩm - trình đơn thả xuống hiển thị No, nhưng khi tôi nhận được giá trị của nó trong mã thì nó null. Nếu tôi chỉ cần nhấp vào menu thả xuống, chỉ cần đặt Novà lưu sản phẩm - mọi thứ đều hoạt động.

Làm thế nào để khắc phục điều này?


để tạo drop / thuộc tính, hãy sử dụng magento.stackexchange.com/questions/12137/NH
Amit Bera

Câu trả lời:


14

Cố gắng đặt giá trị mặc định là chuỗi

'default' => '0'

hoặc trống

'default' => ''

Cập nhật

Các giá trị mặc định được thêm vào khi bạn thêm sản phẩm mới cho những sản phẩm cũ mà nó không ảnh hưởng.

Cố gắng khắc phục điều đó trong quản lý sản phẩm bằng hành động hàng loạt

Bên trong quản lý sản phẩm, có một hành động được gọi là Cập nhật các thuộc tính. Chọn tất cả các sản phẩm bạn muốn cập nhật và sau đó chọn Cập nhật thuộc tính và thêm tất cả thông tin mới vào.


1
Tôi đã thử nó và không hoạt động. :(
Syspect

3

Bạn nên đặt giá trị cho tất cả các thực thể hiện có theo cách thủ công:

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

nguồn: /programming/4906497/default-attribution-value-for-all-product-in-magento . Xem câu trả lời của Asrar Malik.


3

Tôi gặp vấn đề với các đoạn mã ở trên một thuộc tính select được tạo thay vì thuộc tính yes / no. Để khắc phục điều này tôi đã phải sử dụng

'input'             => 'boolean'

thay vì:

'input'             => 'select'

0

Tôi cũng không thể thêm giá trị mặc định 0 vào thuộc tính yes / no.

Do đó, tôi đã sử dụng một sự kiện để thêm giá trị mặc định 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>

Phương pháp:

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

Để thêm thuộc tính có / không tùy chỉnh vào mô-đun tạo magento như dưới đây.

http://www.pearlbells.co.uk/how-to-add-custom-attribution-dropdown-to-carget-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();
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.