Magento 2: problema de clasificación de productos en la página de categoría con el atributo de producto

11

Hice el atributo del producto y lo asigno al conjunto de atributos para que se muestre en la página de detalles del producto del administrador. Según este atributo de producto, clasifico la colección de productos en la página de categoría.

El problema es que me puse la Catalog Input Type for Store Ownera Text field. Tendré que establecer el valor numérico para cada producto para ordenar la colección de productos en función de este atributo. Funciona bien de 1 a 9, pero cuando aumento el recuento más de 9 como 10, 11, etc., destruye la clasificación. Puede ser porque el tipo de campo no es tipo de número

Cualquier ayuda, experiencia e intercambio de conocimientos serán apreciados.

Muhammad Hasham
fuente

Respuestas:

3

Intente de la siguiente manera con el complemento personalizado, así que agregue el código del complemento en su extensión personalizada como se muestra a continuación

/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];
    }
}

Intenta avisarme si tienes algún problema.

Aasim Goriya
fuente
Hermano, yo uso lo mismo para ordenar. Funciona bien cuando ingreso el valor de 1-9en mi atributo de producto personalizado, pero cuando aumento el valor de 9 como 10, 11. Destruirá la clasificación como dije en mi pregunta. De todos modos, gracias por responder. Por tu esfuerzo. +1
Muhammad Hasham
Intente cambiar el tipo de atributo de su base de datos a int
Aasim Goriya
Durante la creación de atributos del producto desde el administrador, ¿hay alguna forma de establecer el tipo de atributo del producto int? No hay nada Catalog Input Type for Store Owner como número o etc.
Muhammad Hasham