Вопрос по – Создание наборов атрибутов и атрибутов программно

1

Я использую код, указанный по следующей ссылке:

http://www.magentocommerce.com/wiki/5_-_modules_and_development/catalog/programmatically_adding_attributes_and_attribute_sets

Все работает до точки:

    // Just add a default group.
    else
    {
        $this->logInfo("Creating default group [{$this->groupName}] for set.");

        $modelGroup = Mage::getModel('eav/entity_attribute_group');
        $modelGroup->setAttributeGroupName($this->groupName);
        $modelGroup->setAttributeSetId($id);

        // This is optional, and just a sorting index in the case of
        // multiple groups.
        // $modelGroup->setSortOrder(1);

        $model->setGroups(array($modelGroup));
    }

Я не уверен, откуда должна быть установлена ссылка на объект - я пытаюсь сделать это отдельным файлом, который можно автоматизировать - я запускаю этот файл, выполняя

require_once 'app/Mage.php'; 
Mage::app(); 

Любая помощь в этом будет принята с благодарностью

Спасибо Верн - я сделаю это - я имею в виду $ this-> groupName, который ничего не возвращает - используя его как отдельный скрипт, как мне создать экземпляр этого объекта для получения и установки имени группы? digital_paki
Вместо logInfo вы должны использовать Mage :: log (). Vern Burton
какая ссылка на объект? Lucas Moeskops

Ваш Ответ

3   ответа
12

который выглядит так

<resources>
    <namespace_module_setup><!-- becomes folder under sql dir -->
        <setup>
            <module>Namespace_Module</module>
            <class>Mage_Eav_Model_Entity_Setup</class>
        </setup>
    </namespace_module_setup>
</resources> 

Это позволит вам разместить ваш код установщика в каталоге, который находится в вашем XML. Вы должны убедиться, что версия, указанная в установочном файле, соответствует<version>1.2.0</version> вашего модуля, иначе Magento не сможет запустить ваш установщик. Чтобы добавить атрибут Set, вы можете использовать следующие данные, я никогда не использовал их, но entityTypeId определяет, является ли это клиент, отгрузка, категория, сущность продукта, каждый 1, 2, 3, 4 соответственно.

/**
     * Add Attribute Set
     *
     * @param mixed $entityTypeId
     * @param string $name
     * @param int $sortOrder
     * @return Mage_Eav_Model_Entity_Setup
     */
    public function addAttributeSet($entityTypeId, $name, $sortOrder = null)
    {
        $data = array(
            'entity_type_id'        => $this->getEntityTypeId($entityTypeId),
            'attribute_set_name'    => $name,
            'sort_order'            => $this->getAttributeSetSortOrder($entityTypeId, $sortOrder),
        );

        $setId = $this->getAttributeSet($entityTypeId, $name, 'attribute_set_id');
        if ($setId) {
            $this->updateAttributeSet($entityTypeId, $setId, $data);
        } else {
            $this->_conn->insert($this->getTable('eav/attribute_set'), $data);

            $this->addAttributeGroup($entityTypeId, $name, $this->_generalGroupName);
        }

        return $this;
    }

Это код для добавления атрибута в набор, просто измените данные набора атрибутов

//app/code/local/Namespace/Module/sql/Namespace_Module_setup/mysql4-install-1.0.0.php
    $installer = $this;
    /* @var $installer Mage_Eav_Model_Entity_Setup */

    $installer->startSetup();

        $data= array (
            'attribute_set' =>  'Default',
            'group' => 'General',
            'label'    => 'Some Label',
            'visible'     => true,
            'type'     => 'varchar', // multiselect uses comma-sep storage
            'input'    => 'text',
            'system'   => true,
            'required' => false,
            'user_defined' => 1, //defaults to false; if true, define a group
        );

        $installer->addAttribute('catalog_product','attriute_code',$data)

        $installer->endSetup();

Выше приведен рабочий пример установки атрибута для модуля.

5

ntity_Setup для вашего установочного скрипта и используйте что-то вроде этого в вашем установщике:

$installer = $this;
/* @var $installer Mage_Eav_Model_Entity_Setup */

$installer->startSetup();
$installer->addAttributeSet(Mage_Catalog_Model_Product::ENTITY, 'New Attribute Set Name');
$installer->endSetup();
1

поэтому Magento загружает его, когда модуль установлен (или обновлен).$thisв примере означает, что класс установщика.

Вы можете создать модуль и установщик, используяhttps://bitbucket.org/alexsiri7/qbmagemoduleshellи затем добавив этот код там. Этот инструмент является создателем модуля, который я разработал.

Похожие вопросы