Magento 2 - Problema de classificação do produto na página de categoria usando o atributo do produto


11

Eu criei o atributo product e atribua-o ao conjunto de atributos para que ele apareça na página de detalhes do produto admin. Com base neste atributo do produto, classifico a coleção de produtos na página da categoria.

O problema é que eu configurei Catalog Input Type for Store Ownerpara Text field. Terei que definir o valor numérico em relação a cada produto para classificar a coleção de produtos com base nesse atributo. Funciona bem de 1 a 9, mas quando eu aumento a contagem mais de 9, como 10, 11, etc., isso destrói a classificação. Pode ser porque o tipo de campo não é do tipo numérico

Qualquer ajuda, experiência e compartilhamento de conhecimento serão apreciados.

Respostas:


3

Por favor, tente seguir o caminho usando o plugin personalizado, então adicione o código do plugin na sua extensão personalizada, conforme abaixo

/Vendor/Module/etc/frontend/di.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="Magento\Catalog\Block\Product\ProductList\Toolbar">
        <plugin name="vendormodule_catalog_block_product_listproduct_toolbar" type="Vendor\Module\Plugin\Catalog\Block\Product\ProductList\Toolbar"/>
    </type>
</config>

/Vendor/Module/Plugin/Catalog/Block/Product/ProductList/Toolbar.php

<?php

namespace Vendor\Module\Plugin\Catalog\Block\Product\ProductList;

class Toolbar
{
    /**
     * @var \Magento\Framework\Registry
     */
    protected $_coreRegistry;

    public function __construct(\Magento\Framework\Registry $coreRegistry)
    {
        $this->_coreRegistry = $coreRegistry;
    }

    /**
     * @param \Magento\Catalog\Block\Product\ProductList\Toolbar $toolbar
     * @param \Magento\Framework\Data\Collection $collection
     * @return array
     */
    public function beforeSetCollection(
        \Magento\Catalog\Block\Product\ProductList\Toolbar $toolbar,
        $collection
    ){
        $collection->getSelect()->group('e.entity_id')->order('{YOUR CUSTOM ATTRIBUTE CODE} ASC');
        $collection->getSize();

        return [$collection];
    }
}

Por favor, tente e me avise se você tiver algum problema.


Bro, eu uso o mesmo para classificar. Funciona bem quando insiro o valor 1-9no meu atributo de produto personalizado, mas quando aumento o valor de 9 como 10, 11. Isso destrói a classificação como eu disse na minha pergunta. De qualquer forma, obrigado por responder. Pelo seu esforço. +1
Muhammad Hasham

Portanto, tente com a mudança em seu banco de dados tipo de atributo para int
Aasim Goriya

Durante a criação do atributo do produto pelo administrador, existe uma maneira de definir o tipo de atributo do produto int? Não há nada no Catalog Input Type for Store Owner número como ou etc
Muhammad Hasham
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.