Добавить attributeSet, но на основе существующего набора - Magento - PullRequest
5 голосов
/ 20 августа 2010

Хорошо, можно добавить новый набор атрибутов в magento, используя что-то вроде следующего:

$entitySetup = new Mage_Eav_Model_Entity_Setup;
$entitySetup->addAttributeSet('catalog_product', $setName);

Но как я могу основать набор на существующем наборе, как по умолчанию.Эта опция доступна в разделе администратора, так что это возможно.

Ответы [ 5 ]

3 голосов
/ 29 января 2013
            // create attribute set
            $entityTypeId = Mage::getModel('eav/entity')
                ->setType('catalog_product')
                ->getTypeId(); // 4 - Default

            $newSet = Mage::getModel('eav/entity_attribute_set');
            $newSet->setEntityTypeId($entityTypeId);
            $newSet->setAttributeSetName(self::ATTRIBUTE_SET_NAME);
            $newSet->save();

            $newSet->initFromSkeleton($entityTypeId);
            $newSet->save();
3 голосов
/ 20 августа 2010

Я сделал это 6 месяцев назад, у меня больше нет кода, но я знаю, что вы должны использовать метод initFromSkeleton () в вашем наборе атрибутов. Вы можете искать в коде Magento вызовы этой функции, вызовов очень мало (возможно, только один). Он покажет вам его использование.

РЕДАКТИРОВАТЬ: Я помню, у меня была та же проблема, о которой вы говорите, и я отправил по почте об этом. Вот использование, которое мне посоветовали:

$attrSet = Mage::getModel('eav/entity_attribute_set');
$attrSet->setAttributeSetName('MyAttributeSet');
$attrSet->setEntityTypeId(4);//You can look into the db what '4' corresponds to, I think it is for products.
$attrSet->initFromSkeleton($attrSetId);
$attrSet->save();

Инициализация выполняется перед сохранением.

1 голос
/ 23 марта 2015

Вот что у меня сработало.

$i_duplicate_attribut_set_id = 10; // ID of Attribut-Set you want to duplicate
$object = new Mage_Catalog_Model_Product_Attribute_Set_Api();
$object->create('YOUR_ATTRIBUT_SET_NAME', $i_duplicate_attribut_set_id);

Алекс

0 голосов
/ 21 июня 2013

Здесь:

$entityTypeId = Mage::getModel('eav/entity')
    ->setType('catalog_product')  // This can be any eav_entity_type code
    ->getTypeId();
$attrSet = Mage::getModel('eav/entity_attribute_set');

$attrSetCollection = $attrSet->getCollection();
$attrSetCollection
    ->addFieldToFilter('entity_type_id', array('eq' => $entityTypeId))
    ->addFieldToFilter('attribute_set_name', array('eq' => 'Default')); // This can be any attribute set you might want to clone

$defaultAttrSet = $attrSetCollection->getFirstItem();
$defaultAttrSetId = $defaultAttrSet->getAttributeSetId();

$attrSet->setAttributeSetName('Assinaturas'); // This is the new attribute set name
$attrSet->setEntityTypeId($entityTypeId);
$attrSet->initFromSkeleton($defaultAttrSetId);
$attrSet->save();
0 голосов
/ 02 февраля 2012

Здесь вы можете найти полезную информацию о работе с наборами атрибутов .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...