Magento2:デフォルトで価格の昇順ではなく降順で並べ替え


11

わかりましたので、カテゴリを価格順に並べ替えます。Magento 2は、デフォルトでこれを価格の上昇に設定しています。しかし、私はそれが価格の降順であることを望みます。

catalog_category_view.xmlテーマをカスタマイズして引数を設定することでこれを実行できると確信していますがproduct_list_toolbar、それを理解することはできません。何か助けは?


2
これらの2つのリンクmage2.pro/t/topic/1095およびmage2.pro/t/topic/1087/2を使用します。それはあなたを助けるでしょう
Manashvi Birla 2016

回答:


24

ファイルをコピーします。

vendor / magento / module-catalog / view / frontend / layout / catalog_category_view.xml

app / design / frontend / {{Vender_Namespace}} / {{Theme_Name}} / Magento_Catalog / layout / catalog_category_view.xml

あなたのテーマにこれをファイルに追加してください:

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="2columns-left" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceContainer name="content">
            <referenceBlock name="category.products.list">
                <action method="setDefaultDirection">
                    <argument name="dir" xsi:type="string">desc</argument>
                </action>
            </referenceBlock>
        </referenceContainer>
        <move element="category.view.container" destination="content" before="-"/>
    </body>
</page>

Manashviがこの機能を制御するファイルのコア内の適切な場所を指すリンクは、ソリューションを提供していません。これはコアコードのどこにも見つからなかったので、このファイルのコードに基づいて推測しました:

vendor / magento / module-catalog / Block / Product / ProductList / Toolbar.php

他の.xmlファイルの他の構成で構文を使用しました。

私は$block->setDefaultDirection('desc')ファイルを呼び出してみました:

vendor / magento / module-catalog / view / frontend / templates / product / list / toolbar / sorter.phtml

ファイルがこれは動作しませんでした。私は理由を突き止めていませんが、デフォルトを設定するためにxmlを使用して機能したので、次に進みました。


1
簡単な質問@circlesixソリューションはうまく機能しますが、いくつかのカテゴリにのみ適用したいと思います。管理パネル内の各カテゴリのCustom Layout UpdateセクションにあるreferenceContainerセクションをドロップできると思いましたが、これは影響がありません。何か案は?
caffeinehigh

まだ解決策を見つけていませんが、これを行うためのより良い方法を思い付くことができたときに、ここに投稿します。
circlesix 2016年

1
@ user1837290ではreferenceContainer、特定のカテゴリの管理者の[Layout Update XML]フィールドに、開始と終了のチャンクを置くだけです。テーマの並べ替えをグローバルにオーバーライドしない限り、うまくいくはずです。関連:magento.stackexchange.com/q/167048/2415
Paws

1
@circlesixブロックを参照するときに名前属性を指定するだけでよい
Miguel Felipe Guillen Calo 2018

1
コメントし、これがMagento 2.3でも機能することを伝えたかったのですが、問題は解決しました!
ダニエルブラック

5

短いバージョンも使用できます。特定のカテゴリについては、別のファイルを使用できます:catalog_category_view_id_X.xml

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="2columns-left" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
    <referenceBlock name="category.products.list">
        <action method="setDefaultDirection">
            <argument name="dir" xsi:type="string">desc</argument>
        </action>
    </referenceBlock>
</body>
</page>

カスタムレイアウトファイルを作成したくない場合は、のソリューション(参照ブロックとコンテンツを含む)をカテゴリのカスタムXMLに追加することもできます。
Phil Birnie、2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.