Magento 2-商品属性を使用したカテゴリページでの商品並べ替えの問題


11

製品の属性を作成し、属性セットに割り当てて、管理製品の詳細ページに表示されるようにしました。この商品属性に基づいて、カテゴリページで商品コレクションを並べ替えます。

問題は、をに設定したCatalog Input Type for Store OwnerことText fieldです。この属性に基づいて製品コレクションをソートするには、各製品に対して数値を設定する必要があります。1から9までは問題なく動作しますが、10、11などのようにカウントを9より多くすると、ソートが破壊されます。フィールドタイプが数値タイプではない可能性があります

どんな助け、経験、知識の共有もありがたいです。

回答:


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
ムハンマドハシャム

データベース属性のタイプをintに変更してみてください
Aasim Goriya

管理者からの製品属性の作成中に、製品属性のタイプをどうしても設定できintますか?Catalog Input Type for Store Owner 同じような数などには何もありません
Muhammad Hasham
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.