magento 2 - Как получить имя набора атрибутов в списке продуктов и на странице сведений о продукте

10

Как мы можем получить имя набора атрибутов для продукта. Я хочу использовать его на странице с описанием товара и списком товаров .

Абхишек Дханрадж Шахдео
источник

Ответы:

15

Мы можем использовать, \Magento\Eav\Api\AttributeSetRepositoryInterfaceчтобы получить имя набора атрибутов.

Подробная страница

Нам нужно переопределить \Magento\Catalog\Block\Product\Viewблок. Внедрить этот класс в конструктор

/** @var \Magento\Eav\Api\AttributeSetRepositoryInterface $attributeSet **/
protected $attributeSet;

public function __construct(
    ......
    \Magento\Eav\Api\AttributeSetRepositoryInterface $attributeSet
    ......
) {
   ......
   $this->attributeSet = $attributeSet;
}


//Build method to get attribute set
public function getAttributeSetName() {

    $product = $this->getProduct();
    $attributeSetRepository = $this->attributeSet->get($product->getAttributeSetId());
    return $attributeSetRepository->getAttributeSetName();
}

Теперь мы можем позвонить на странице сведений о продукте: $block->getAttributeSetName();

Страница листинга

Нам нужно переопределить \Magento\Catalog\Block\Product\ListProductблок

/** @var \Magento\Eav\Api\AttributeSetRepositoryInterface $attributeSet **/
protected $attributeSet;

public function __construct(
    ......
    \Magento\Eav\Api\AttributeSetRepositoryInterface $attributeSet
    ......
) {
   ......
   $this->attributeSet = $attributeSet;
}

public function getAttributeSetName($product) {

    $attributeSetRepository = $this->attributeSet->get($product->getAttributeSetId());
    return $attributeSetRepository->getAttributeSetName();
}

Мы можем позвонить $block->getAttributeSetName($_product).

Хоа ТруонгДинь
источник
$ attributeSet и $ product являются неопределенными переменными, я очень плохо знаком с magento2 и не могу понять, что именно мне нужно написать
Абхишек Дханрадж Шахдео
Вы можете увидеть мой обновленный ответ. Достаточно для вас?
Khoa TruongDinh
Я пытаюсь реализовать его в блоке списка продуктов, но он работает не совсем точно, вносит некоторые изменения
Абхишек Дханрадж Шахдео,
Я получаю сообщение об ошибке, объект должен быть создан
Абхишек Дханрадж Шахдео
Вы можете обновить свой ответ с текущей проблемой, следуя моему ответу.
Khoa TruongDinh