Magento 2: атрибуты (attributes)
Описание флагов атрибутов (официальная документация): docs.magento.com
Некоторые полезные константы содержатся здесь: Magento/Catalog/Api/Data/EavAttributeInterface
Взять все атрибуты продуктов текущего стора
use Magento\Catalog\Model\ResourceModel\Product\Attribute\CollectionFactory
use Magento\Store\Model\StoreManagerInterface;
$attributes = $this->_attributeCollectionFactory
->create()
->addHasOptionsFilter()
->addDisplayInAdvancedSearchFilter()
->addStoreLabel($this->_storeManager->getStore()->getId())
->setOrder('main_table.attribute_id', 'asc')
->load();
Обновить заначение атрибута у атрибута продукта(не значение атрибута продукта, а значение атрибуту атрибута)
use Magento\Eav\Setup\EavSetup; $this->eavSetup->updateAttribute(Product::ENTITY, 'barcode', 'used_in_product_listing', 1);Взять атрибут у объекта любой сущности
(в данном случае кастомер)
$customerModel = $this->customerFactory->create(); $this->customerResourceModel->load($customerModel, $customerId); return $customerModel->getAdditionalPhone(); // в случае если код атрибута additional_phoneДобавить продуктовый атрибут во все атрибут-сеты (Attribute Set) продуктов
use Magento\Eav\Api\AttributeManagementInterface;
use Magento\Eav\Setup\EavSetup;
use Magento\Catalog\Model\Config;
public const ATTRIBUTE_GROUP = 'General';
public const ATTRIBUTE_CODE = 'manufacturer';
$entityTypeId = $this->eavSetup->getEntityTypeId(\Magento\Catalog\Model\Product::ENTITY);
$attributeSetIds = $this->eavSetup->getAllAttributeSetIds($entityTypeId); // Взять айдишники всех атрибутсетов (только для ENTITY = 'catalog_product')
foreach ($attributeSetIds as $attributeSetId) {
if ($attributeSetId) {
$group_id = $this->config->getAttributeGroupId($attributeSetId, self::ATTRIBUTE_GROUP);
$this->attributeManagement->assign(
Product::ENTITY,
$attributeSetId,
$group_id,
self::ATTRIBUTE_CODE,
999
);
}
}