Magento 2 - Problema di ordinamento del prodotto nella pagina della categoria utilizzando l'attributo del prodotto


11

Ho creato l'attributo del prodotto e lo ho assegnato sul set di attributi in modo che venga visualizzato nella pagina dei dettagli del prodotto di amministrazione. Sulla base di questo attributo del prodotto, ordina la raccolta del prodotto nella pagina della categoria.

Il problema è, ho impostato la Catalog Input Type for Store Ownera Text field. Dovrò impostare il valore numerico su ciascun prodotto per ordinare la raccolta di prodotti in base a questo attributo. Funziona bene da 1 a 9 ma quando aumento il conteggio di più di 9 come 10, 11 ecc., Distrugge l'ordinamento. Potrebbe essere perché il tipo di campo non è di tipo numerico

Qualsiasi aiuto, esperienza e condivisione delle conoscenze sarebbe apprezzato.

Risposte:


3

Prova a seguire la procedura utilizzando il plug-in personalizzato, quindi aggiungi il codice del plug-in nella tua estensione personalizzata come di seguito

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

Per favore prova e fammi sapere se riscontri problemi.


Fratello, uso lo stesso per l'ordinamento. Funziona bene quando inserisco il valore dall'attributo 1-9del mio prodotto personalizzato ma quando aumento il valore da 9 come 10, 11. Distruggerà l'ordinamento come ho detto nella mia domanda. Comunque grazie per aver risposto. Per i tuoi sforzi. +1
Muhammad Hasham,

Quindi prova a modificare il tipo di attributo del tuo database in int
Aasim Goriya,

Durante la creazione dell'attributo del prodotto dall'amministratore, esiste un modo per impostare il tipo di attributo del prodotto su int? Non c'è nulla di Catalog Input Type for Store Owner simile in numero o ecc.
Muhammad Hasham,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.