Magento 2 - Problem z sortowaniem produktów na stronie kategorii przy użyciu atrybutu produktu


11

Zrobiłem atrybut produktu i przypisałem go do zestawu atrybutów, aby pojawił się na stronie szczegółów produktu administratora. Na podstawie tego atrybutu produktu sortuję kolekcję produktów na stronie kategorii.

Problemem jest, jak ustawić Catalog Input Type for Store Ownersię Text field. Będę musiał ustawić wartość liczbową dla każdego produktu, aby posortować kolekcję produktów na podstawie tego atrybutu. Działa dobrze od 1 do 9, ale gdy zwiększę liczbę o więcej niż 9, np. 10, 11 itd., Niszczy to sortowanie. Może być tak, ponieważ typ pola nie jest typem liczbowym

Doceniamy wszelką pomoc, doświadczenie i dzielenie się wiedzą.

Odpowiedzi:


3

Spróbuj skorzystać z niestandardowej wtyczki, więc dodaj kod wtyczki do niestandardowego rozszerzenia, jak poniżej

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

Proszę dać mi znać, jeśli pojawi się jakiś problem.


Bro Używam tego samego do sortowania. Działa dobrze, gdy wprowadzę wartość z 1-9mojego niestandardowego atrybutu produktu, ale kiedy zwiększę wartość z 9, np. 10, 11. Zniszczy to sortowanie, jak powiedziałem w moim pytaniu. W każdym razie dzięki za odpowiedź. Za twój wysiłek. +1
Muhammad Hasham

Więc spróbuj zmienić typ atrybutu bazy danych na int
Aasim Goriya

Czy podczas tworzenia atrybutu produktu od administratora można ustawić typ atrybutu produktu na int? Nie ma nic w Catalog Input Type for Store Owner podobnych
liczbach
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.