【问题标题】:Magento 2.4.0 sort products on product listing by is_salableMagento 2.4.0 按 is_salable 对产品列表中的产品进行排序
【发布时间】:2020-11-06 10:58:55
【问题描述】:

我希望产品列表中的产品始终从可售到不可售排序。应首先显示具有“添加到购物车”按钮的产品。

我尝试了https://magento.stackexchange.com/questions/178061/magento2-sort-products-and-search-result-by-stock-availability 中所写的创建插件:

//di.xml

    <type name="Magento\Catalog\Model\Layer">
            <plugin name="product_sort_by_stock" type="Company\Module\Model\Plugin\Layer"/>
    </type>

//app/code/Company/Module/Model/Plugin/Layer.php

    <?php declare(strict_types=1);
    
    namespace Company\Module\Model\Plugin;
    
    class Layer
    {
    
        public function aroundgetProductCollection(\Magento\Catalog\Model\Layer $subject, \Closure $proceed)
        {
            $selectedDirection = 'DESC';
            $collection = $proceed();
            $collection->getSelect()->order('is_salable '. $selectedDirection);
            return $collection;
        }
    }

但这对我不起作用。

您能否建议我如何按is_salable 属性对产品集合进行排序?我有 Magento 2.4.0 和 Elasticsearch 7.9.2

【问题讨论】:

  • 你能描述什么“不起作用”吗?您是否收到错误或结果未按您想要的方式排序(如果是后者,请展示一些示例,说明您得到的结果与预期的结果)
  • 不起作用意味着添加插件不会更改排序产品。它们的顺序相同。他们没有像我想要的那样排序。我预计列表中的产品将按如下方式排序:1. 加入购物车 2. 加入购物车 3. 缺货 4. 缺货

标签: elasticsearch magento2


【解决方案1】:

您可以覆盖此文件并进行自定义。

Magento\Elasticsearch\Model\ResourceModel\Fulltext\Collection\SearchResultApplier

我在 Magento 2.3.2 中也面临同样的问题。这对我有用。

【讨论】:

  • 我觉得集合分页是个好地方。我可以在分页之前做这样的事情吗?
  • 嗨,你在分页之前找到解决方案了吗@eggman?
  • @aravind 是的,这个文件是我进行自定义的好地方,但从 elasticseach(页面大小)接收到有限数量的记录。需要编辑对 elesticsearch 的请求,它会返回所有类别的产品。 SearchResultApplier 再次进行分页。我必须安装不使用 SearchResultApplier 的模块,现在我有了默认解决方案。
  • 这对我有帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-15
  • 2014-06-09
  • 2015-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多