У той час як атрибут є індивідуальною характеристикою продукту, набір атрибутів є групою тих характеристик, які визначають продукт. Ви використовуватимете атрибути продукту щоразу під час створення продуктів в Magento.
Якщо вам потрібно створити кілька атрибутів продукту, то виконання такого завдання за допомогою адмін панелі може зайняти багато часу. Тож у випадку, якщо вам потрібно зробити це швидко, створіть набір атрибутів у Magento 2 програмно.
Примітка: перш ніж створювати набори атрибутів, ви повинні створити атрибути продукту. Тому, можливо, вам стане в нагоді наша стаття про те, як програмно створювати атрибути продукту в Magento.
Використайте цей код, щоб створити набір атрибутів програмно. Створіть файл InstallData.php у app/code/Vendor/Module/Setup/InstallData.php.
<?php
namespace Vendor\Extension\Setup;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Catalog\Setup\CategorySetupFactory;
use Magento\Eav\Model\Entity\Attribute\SetFactory as AttributeSetFactory;
class InstallData implements InstallDataInterface
{
private $attributeSetFactory;
private $attributeSet;
private $categorySetupFactory;
public function __construct(AttributeSetFactory $attributeSetFactory, CategorySetupFactory $categorySetupFactory )
{
$this->attributeSetFactory = $attributeSetFactory;
$this->categorySetupFactory = $categorySetupFactory;
}
public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
{
$setup->startSetup();
$categorySetup = $this->categorySetupFactory->create(['setup' => $setup]);
$attributeSet = $this->attributeSetFactory->create();
$entityTypeId = $categorySetup->getEntityTypeId(\Magento\Catalog\Model\Product::ENTITY);
$attributeSetId = $categorySetup->getDefaultAttributeSetId($entityTypeId);
$data = [
'attribute_set_name' => 'MyCustomAttribute',
'entity_type_id' => $entityTypeId,
'sort_order' => 200,
];
$attributeSet->setData($data);
$attributeSet->validate();
$attributeSet->save();
$attributeSet->initFromSkeleton($attributeSetId);
$attributeSet->save();
$setup->endSetup();
}
}
Якщо ви зробите все правильно, то зможете побачити свій набір атрибутів з-поміж інших під час створення нового продукту:
Створивши набори атрибутів і атрибути продуктів, додайте атрибути у набори атрибутів програмно.