Атрибути — це характеристики продукту, які допомагають пропонувати клієнтам широкий вибір опцій і впливають на їхні рішення про покупку. Проте все не обмежується додаванням атрибутів продукту в Magento. Ви також можете використовувати атрибути, щоб визначити правила динамічної категорії, cart price rules, правила пов’язаних продуктів і багато інших параметрів.
З огляду на це, вам важливо знати, як створювати атрибути продукту в Magento програмно. На випадок, якщо вам доведеться швидко створити декілька атрибутів.
Для того, щоб створити атрибут продукту в Magento програмно, створіть файл InstallData.php у app/code/Vendor/Module/Setup/InstallData.php.
<?php
namespace Vendor\Module\Setup;
use Magento\Eav\Setup\EavSetupFactory;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
class InstallData implements InstallDataInterface
{
private $eavSetupFactory;
public function __construct(EavSetupFactory $eavSetupFactory)
{
$this->eavSetupFactory = $eavSetupFactory;
}
public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
{
$eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);
$eavSetup->addAttribute(
\Magento\Catalog\Model\Product::ENTITY,
'sample_attribute',
[
'type' => 'text',
'backend' => '',
'frontend' => '',
'label' => 'Sample Attribute',
'input' => 'text',
'class' => '',
'source' => '',
'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL,
'visible' => true,
'required' => true,
'user_defined' => false,
'default' => '',
'searchable' => false,
'filterable' => false,
'comparable' => false,
'visible_on_front' => false,
'used_in_product_listing' => true,
'unique' => false,
'apply_to' => ''
]
);
}
}
Завершивши, не забудьте виконати відповідні команди, щоб встановити модуль, а саме:
php bin/magento setup:upgrade php bin/magento setup:static-content:deploy
Примітка: якщо ви не хочете, щоб ваш веб-сайт був зламаним під час deployment, спробуйте ці команди для zero downtime deployment в Magento 2.
Потім перевірте атрибут продукту в адмін панелі.
Якщо ви хочете видалити атрибут продукту, використайте removeAttribute замість addAttribute. Або ж ви можете масово оновити атрибути продуктів, замість того, щоб їх видаляти.
public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context) { $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]); $eavSetup->removeAttribute( \Magento\Catalog\Model\Product::ENTITY, 'sample_attribute'); }