Magento 2 - Vấn đề sắp xếp sản phẩm trên trang danh mục sử dụng thuộc tính sản phẩm


11

Tôi đã tạo thuộc tính sản phẩm và gán nó trên tập thuộc tính để nó sẽ hiển thị trong trang chi tiết sản phẩm của quản trị viên. Dựa trên thuộc tính sản phẩm này, tôi sắp xếp bộ sưu tập sản phẩm trên trang danh mục.

Vấn đề là, tôi đặt Catalog Input Type for Store Ownerđể Text field. Tôi sẽ phải đặt giá trị số theo từng sản phẩm để sắp xếp bộ sưu tập sản phẩm dựa trên thuộc tính này. Nó hoạt động tốt từ 1-9 nhưng khi tôi tăng số lượng nhiều hơn 9 như 10, 11, thì nó sẽ phá hủy việc sắp xếp. Có thể do loại trường không phải là loại số

Bất kỳ trợ giúp, kinh nghiệm và chia sẻ kiến ​​thức sẽ được đánh giá cao.

Câu trả lời:


3

Vui lòng thử theo cách sử dụng plugin tùy chỉnh, vì vậy vui lòng thêm mã plugin trong tiện ích mở rộng tùy chỉnh của bạn như bên dưới

/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/Sản phẩm / ProducttList / 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];
    }
}

Hãy thử và cho tôi biết nếu bạn gặp bất kỳ vấn đề.


Bro tôi sử dụng tương tự để phân loại. Nó hoạt động tốt khi tôi nhập giá trị từ 1-9trong thuộc tính sản phẩm tùy chỉnh của mình nhưng khi tôi tăng giá trị từ 9 như 10, 11. Nó sẽ phá hủy cách sắp xếp như tôi đã nói trong câu hỏi của mình. Dù sao cũng cảm ơn vì đã trả lời. Cho nỗ lực của bạn. +1
Muhammad Hasham

Vì vậy, hãy thử thay đổi loại thuộc tính cơ sở dữ liệu của bạn thành int
Aasim Goriya

Trong quá trình tạo thuộc tính sản phẩm từ quản trị viên, có cách nào để đặt loại thuộc tính sản phẩm thành int? Không có gì Catalog Input Type for Store Owner giống như số hoặc vv
Muhammad Hasham
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.