Answers:
复制文件:
供应商/ magento /模块目录/视图/前端/布局/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指向内核中用于控制此功能的文件的正确位置的链接,但它们未提供解决方案。我没有在核心代码的任何地方找到它,所以我只是根据此文件中的代码进行了猜测:
供应商/ magento /模块目录/块/产品/产品列表/Toolbar.php
并在其他.xml文件的其他配置中使用了该语法。
我确实尝试了调用$block->setDefaultDirection('desc')
文件:
供应商/ magento /模块目录/视图/前端/模板/产品/列表/工具栏/sorter.phtml
文件,但这不起作用。我没有找到原因,但是使用xml来设置默认值有效,所以我继续前进。
referenceContainer
在特定类别的管理员的“布局更新XML”字段中以开头和结尾的块开头即可。只要您不覆盖主题中的全局排序,它就应该起作用。相关:magento.stackexchange.com/q/167048/2415
您也可以使用较短的版本。对于特定类别,可以使用单独的文件: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>