Magento 2 - ปัญหาการคัดแยกสินค้าในหน้าหมวดหมู่โดยใช้คุณสมบัติของผลิตภัณฑ์


11

ฉันทำคุณสมบัติของผลิตภัณฑ์และกำหนดบนชุดคุณลักษณะเพื่อที่จะแสดงในหน้ารายละเอียดผลิตภัณฑ์ของผู้ดูแลระบบ ขึ้นอยู่กับคุณลักษณะของผลิตภัณฑ์นี้ฉันเรียงลำดับการรวบรวมผลิตภัณฑ์ในหน้าหมวดหมู่

ปัญหาคือผมตั้งไปCatalog Input Type for Store Owner Text fieldฉันจะต้องตั้งค่าตัวเลขสำหรับแต่ละผลิตภัณฑ์เพื่อเรียงลำดับการรวบรวมผลิตภัณฑ์ตามคุณลักษณะนี้ มันทำงานได้ดีจาก 1-9 แต่เมื่อฉันเพิ่มจำนวนมากกว่า 9 เช่น 10, 11 เป็นต้นมันจะทำลายการเรียงลำดับ อาจเป็นเพราะประเภทเขตข้อมูลไม่ใช่ชนิดตัวเลข

ความช่วยเหลือประสบการณ์และการแบ่งปันความรู้ใด ๆ จะได้รับการชื่นชม

คำตอบ:


3

โปรดลองวิธีต่อไปนี้โดยใช้ปลั๊กอินที่กำหนดเองดังนั้นโปรดเพิ่มรหัสปลั๊กอินในส่วนขยายที่กำหนดเองดังนี้

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

โปรดลองและแจ้งให้เราทราบหากคุณมีปัญหาใด ๆ


Bro ฉันใช้เหมือนกันสำหรับการเรียงลำดับ มันทำงานได้ดีเมื่อฉันป้อนค่าจาก1-9ในแอตทริบิวต์ผลิตภัณฑ์ที่กำหนดเองของฉัน แต่เมื่อฉันเพิ่มค่าจาก 9 เช่น 10, 11 มันจะทำลายการเรียงลำดับตามที่ฉันพูดในคำถามของฉัน อย่างไรก็ตามขอขอบคุณสำหรับการตอบรับ สำหรับความพยายามของคุณ +1
Muhammad Hasham

ดังนั้นลองเปลี่ยนประเภทแอตทริบิวต์ฐานข้อมูลของคุณเป็น int
Aasim Goriya

ในระหว่างการสร้างคุณสมบัติผลิตภัณฑ์จากผู้ดูแลระบบมีการตั้งค่าประเภทคุณลักษณะของผลิตภัณฑ์เป็นintหรือไม่ ไม่มีอะไรที่Catalog Input Type for Store Owner เหมือนหมายเลขหรืออื่น ๆ
Muhammad Hasham
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.