magento 2 - Como obter o nome do conjunto de atributos na página de listagem e detalhes do produto

10

Como podemos recuperar o nome do conjunto de atributos para um produto. Quero usá-lo nos detalhes do produto e na página de listagem .

Abhishek Dhanraj Shahdeo
fonte

Respostas:

15

Podemos usar \Magento\Eav\Api\AttributeSetRepositoryInterfacepara obter o nome do conjunto de atributos.

Página de detalhes

Precisamos substituir o \Magento\Catalog\Block\Product\Viewbloco. Injete esta classe no construtor

/** @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();
}

Agora, podemos chamar a página de detalhes do produto: $block->getAttributeSetName();

Página de listagem

Precisamos substituir o \Magento\Catalog\Block\Product\ListProductbloco

/** @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();
}

Nós podemos ligar $block->getAttributeSetName($_product).

Khoa TruongDinh
fonte
$ attributeSet e US $ produto são variáveis indefinidas, eu sou muito novo para magento2 e eu não sou capaz de entender o que exatamente eu preciso escrever
Abhishek Dhanraj Shahdeo
Você pode ver minha resposta atualizada. Suficiente para ti?
precisa saber é o seguinte
Estou tentando implementá-lo em bloco lista de produtos, mas ele não está funcionando tão exata, fazendo algumas modificações
Abhishek Dhanraj Shahdeo
Estou ficando objeto de erro dom deve ser criado
Abhishek Dhanraj Shahdeo
Você pode atualizar sua resposta com o problema atual ao seguir minha resposta.
precisa saber é o seguinte