Magento 2 - Problem beim Sortieren der Produkte auf der Kategorieseite mithilfe des Produktattributs


11

Ich habe ein Produktattribut erstellt und es einem Attributsatz zugewiesen, damit es auf der Seite mit den Produktdetails des Administrators angezeigt wird. Basierend auf diesem Produktattribut sortiere ich die Produktsammlung auf der Kategorieseite.

Das Problem ist, ich setze das Catalog Input Type for Store Ownerauf Text field. Ich muss den numerischen Wert für jedes Produkt festlegen, um die Produktsammlung anhand dieses Attributs zu sortieren. Es funktioniert gut von 1-9, aber wenn ich die Anzahl um mehr als 9 wie 10, 11 usw. erhöhe, wird die Sortierung zerstört. Dies kann daran liegen, dass der Feldtyp kein Nummerntyp ist

Jede Hilfe, Erfahrung und Wissensaustausch wäre dankbar.

Antworten:


3

Bitte versuchen Sie es auf folgende Weise mit dem benutzerdefinierten Plugin. Fügen Sie daher wie unten beschrieben den Plugin-Code in Ihre benutzerdefinierte Erweiterung ein

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

Bitte versuchen Sie es und lassen Sie mich wissen, wenn Sie ein Problem bekommen.


Bro Ich benutze das gleiche zum Sortieren. Es funktioniert einwandfrei, wenn ich den Wert von 1-9in mein benutzerdefiniertes Produktattribut eingebe, aber wenn ich den Wert von 9 auf 10, 11 erhöhe. Dadurch wird die Sortierung zerstört, wie ich in meiner Frage gesagt habe. Trotzdem danke für die Antwort. Für Ihre Mühe. +1
Muhammad Hasham

Versuchen Sie also, Ihren Datenbankattributtyp in int
Aasim Goriya am

Gibt es bei der Erstellung von Produktattributen vom Administrator aus überhaupt einen Produktattributtyp int? Es gibt nichts in der Catalog Input Type for Store Owner gleichen Zahl oder so
Muhammad Hasham
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.