Как установить значение по умолчанию "Активен" на "да" для новой категории


Я пытаюсь установить значение по умолчанию как "Да" для поля Активно в Новой категории . Значение по умолчанию - нет, и владелец магазина раздражается, когда категория не отображается на интерфейсе. Я пробовал использовать функцию $attribute->getDataSetDefault('default_value',1); на app\code\core\Mage\Adminhtml\Block\Catalog\Category\Tabs.php , но это не сработало.

Содержимое div в design/adminhtml/по умолчанию/по умолчанию/каталог/категория/редактирование/форма.phtml генерируется динамически на Tabs.php, на этот вызов:

$block = $this->getLayout()->createBlock($this->getAttributeTabBlock(), '')
            ->setGroup($group)
            ->setAttributes($attributes)
            ->setAddHiddenFields($active)
            ->toHtml();

Я попытался выполнить отладку, но через некоторое время у меня произошло переполнение отладочной памяти, и она вышла из строя. Я все еще пытаюсь это сделать.

Я также попытался просмотреть файлы конфигурации, чтобы найти, где создается атрибут, чтобы узнать, установлено ли значение по умолчанию, но я его еще не нашел.

New Category Form

Author: Peter Mortensen, 2014-05-28

2 answers

Я бы посоветовал никогда не редактировать основной код, так как это создаст проблемы для вас в будущем.

Это изменение базы данных. 0 предшествует 1, и для этого атрибута не задано значение по умолчанию, поэтому 0 всегда будет выбрано, если не указано иное.

Вам нужно зайти в свою базу данных, найти код атрибута "is_active" (их может быть два, отредактируйте только один с исходной моделью "eav/entity_attribute_source_boolean"). В поле "Значение по умолчанию" добавьте значение "1".

Если вы знать, как использовать запросы на phpMyAdmin, которые выглядели бы так:

UPDATE `eav_attribute` SET `default_value` = '1' WHERE `eav_attribute`.`attribute_code`='is_active' AND `eav_attribute`.`source_model`='eav/entity_attribute_source_boolean';

Database Change

Обязательно сохраните изменения, а затем попробуйте создать новую категорию. Вы должны увидеть что-то вроде этого: Is Active

Примечание: Всякий раз, когда вы редактируете поле в базе данных, вы всегда должны создавать резервную копию. Кроме того, я не проводил тщательного тестирования по этому вопросу, поэтому вам следует сначала протестировать это изменение в экземпляре разработки.

 12
Author: kab8609, 2014-05-28 20:53:52

Как вы сказали, форма динамически создается на основе атрибутов категории. Вы можете изменить значение по умолчанию непосредственно в базе данных с помощью этого SQL:

update eav_attribute set default_value=1 where entity_type_id = 3 and attribute_code='is_active';

3 обозначает тип сущности "категория", как вы можете видеть в таблице eav_entity_type.

Обычно у вас должен быть собственный модуль для конкретной конфигурации хранилища и создания сценария обновления, который вносит это изменение программно:

$installer->updateAttribute('catalog/category', 'is_active', 'default_value', 1);

Где $installer необходимо настроить так, чтобы он имел тип Mage_Eav_Model_Entity_Setup (или подтип).

 3
Author: Fabian Schmengler, 2014-05-28 20:57:41