Magento: Добавление нового атрибута к сгруппированным продуктам в сценарии установки


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

Новый атрибут должен отображаться только на вкладке "Общие" сгруппированных продуктов; простые продукты, настраиваемые продукты, комплексные продукты и т.д. Должны оставаться неизменными. Атрибут должен быть там независимо от выбранного набора атрибутов, точно так же, как это был системный атрибут.

Для этого я подумал, что могу просто добавить атрибут к сущности сгруппированных продуктов, но, как я выяснил, для сгруппированных продуктов нет специальной сущности, только сущность "каталог_продукт" для продуктов в целом. Таким образом, моей следующей мыслью было, что мне нужно добавить атрибут к сущность "каталог_продукт", а затем назначьте ее правильной группе атрибутов, чтобы она применялась только к сгруппированным продуктам.

Проблема в том, что я еще не настолько глубоко в Magento, и я совершенно не представляю, как я должен найти соответствующую группу атрибутов, или если моя идея вообще сработает, возможно, я нахожусь на неправильном пути здесь:/

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

$installer = $this;
$installer->startSetup();
$installer->addAttribute("catalog_product", "my_attrib_name", array( /* just a placeholder */ ));
$installer->endSetup();

Довольно простой...

Author: Subsurf, 2012-02-19

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
    )
);
// ...

Теперь атрибут, добавленный установщиком, является системным атрибутом, он автоматически добавляется в группу "Общие" каждого набора атрибутов и не может быть изменен/перемещен. Как я и предполагал, это также относится только к сгруппированным продуктам.

 7
Author: Subsurf, 2012-02-21 22:13:02