Значение по умолчанию «да/нет» выпадающего атрибут продукта.
-
16-10-2019 - |
Вопрос
Я устанавливаю атрибут со следующим скриптом:
$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();
Также попробовал с $installer = new Mage_Catalog_Model_Resource_Eav_Mysql4_Setup('core_setup');
И тогда я использую значение атрибута в каком -то другом коде. Но я всегда получаю null
. Анкет Я узнал, что атрибут не устанавливает значение по умолчанию. Когда я открываю продукт - выпадает No
, но когда я получаю его ценность в коде, это null
. Анкет Если я просто нажмите на выпадающую сторону, просто установите No
И сохранить продукт - все работает.
Как преодолеть это?
Решение
Попробуйте установить значение по умолчанию в качестве строки
'default' => '0'
или пусто
'default' => ''
Обновлять
Значения по умолчанию добавляются, когда вы добавляете новый продукт для старых, которые он не влияет.
Попробуйте исправить это в управлении продуктом с помощью массовых действий
Внутри управления продуктами существует действие под названием «Атрибуты обновления». Выберите все продукты, которые вы хотите обновить, а затем выберите «Обновление атрибутов» и добавьте всю новую информацию.
Другие советы
Вы должны установить значение для всех существующих объектов вручную:
$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);
источник: https://stackoverflow.com/questions/4906497/default-attribute-value-for-all-product-in-magento. Анкет Смотрите ответ Асрара Малика.
У меня была проблема, что с помощью фрагментов кода над выбором атрибута были созданы вместо атрибута «да/нет». Чтобы исправить это, я должен был использовать
'input' => 'boolean'
вместо:
'input' => 'select'
Я не смог добавить значение по умолчанию 0 в атрибут да/нет.
Поэтому я использовал событие, чтобы добавить значение по умолчанию 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>
Метод:
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());
}
}
Для добавления атрибута «да/нет» в Magento Create Module, как показано ниже.
http://www.pearlbells.co.uk/how-to-add-custom-attribute-propdown-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();