Magento: Добавление нового атрибута к сгруппированным продуктам в сценарии установки
Я разрабатываю небольшое расширение Magento для сгруппированных продуктов. Этому расширению нужен другой атрибут, поэтому я решил, что могу просто написать сценарий настройки, который добавляет новый атрибут к сгруппированным продуктам. Но, как и почти все, что я пытался сделать в Magento, это оказалось намного сложнее, чем я ожидал. Официальный форум Magento не оказывает реальной помощи, поэтому я надеюсь на некоторую поддержку здесь:)
Новый атрибут должен отображаться только на вкладке "Общие" сгруппированных продуктов; простые продукты, настраиваемые продукты, комплексные продукты и т.д. Должны оставаться неизменными. Атрибут должен быть там независимо от выбранного набора атрибутов, точно так же, как это был системный атрибут.
Для этого я подумал, что могу просто добавить атрибут к сущности сгруппированных продуктов, но, как я выяснил, для сгруппированных продуктов нет специальной сущности, только сущность "каталог_продукт" для продуктов в целом. Таким образом, моей следующей мыслью было, что мне нужно добавить атрибут к сущность "каталог_продукт", а затем назначьте ее правильной группе атрибутов, чтобы она применялась только к сгруппированным продуктам.
Проблема в том, что я еще не настолько глубоко в Magento, и я совершенно не представляю, как я должен найти соответствующую группу атрибутов, или если моя идея вообще сработает, возможно, я нахожусь на неправильном пути здесь:/
Просто чтобы вы знали, что у меня есть на данный момент: Я зарегистрировал свой сценарий установки в файле конфигурации расширения, и он выполняется, только проблема заключается в самом сценарии установки, он выглядит следующим образом, потому что, как я уже сказал, я пока не имею понятия:
$installer = $this;
$installer->startSetup();
$installer->addAttribute("catalog_product", "my_attrib_name", array( /* just a placeholder */ ));
$installer->endSetup();
Довольно простой...
1 answers
Теперь я понял, как это сделать самостоятельно. Мой подход был правильным, мне просто нужно было найти соответствующие параметры.
Вызов AddAttribute() теперь выглядит следующим образом:
// ...
$installer->addAttribute(
"catalog_product", // Entity the new attribute is supposed to be added to
"my_attrib_code", // attribute code
array( // Array containing all settings:
"type" => "varchar",
"label" => "My attribute",
"note" => "Insert additional information about the attribute here",
"input" => "text",
"global" => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE,
// Dont know if this is really necessary, but it makes sure
// the attribute is created as a system attribute:
"user_defined" => false,
// This makes sure the attribute only applies to grouped products
"apply_to" => Mage_Catalog_Model_Product_Type::TYPE_GROUPED
)
);
// ...
Теперь атрибут, добавленный установщиком, является системным атрибутом, он автоматически добавляется в группу "Общие" каждого набора атрибутов и не может быть изменен/перемещен. Как я и предполагал, это также относится только к сгруппированным продуктам.