Magento 2-使用产品属性的类别页面上的产品分类问题


11

我制作了产品属性,并将其分配给属性集,以便其显示在管理产品详细信息页面中。基于此产品属性,我在类别页面上对产品集合进行排序。

问题是,我将设置Catalog Input Type for Store OwnerText field。我将必须为每个产品设置数值,以便基于此属性对产品集合进行排序。它从1-9正常工作,但是当我将计数增加到9以上(例如10、11等)时,它将破坏排序。可能是因为字段类型不是数字类型

任何帮助,经验和知识共享将不胜感激。

Answers:


3

请尝试使用自定义插件尝试以下方式,因此请在您的自定义扩展程序中添加插件代码,如下所示

/供应商/模块/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>

/供应商/模块/插件/目录/模块/产品/产品列表/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];
    }
}

如果您遇到任何问题,请尝试让我知道。


兄弟,我用相同的排序。当我1-9在自定义产品属性中输入值时,效果很好,但是当我从9(如10、11)中增加值时,它会像我在问题中说的那样破坏排序。无论如何,感谢您的回答。为您的努力。+1
穆罕默德·哈瑟姆

因此,尝试将您的数据库属性类型更改为int
Aasim Goriya

在通过admin创建产品属性的过程中,是否仍然可以将产品属性类型设置为int?没有Catalog Input Type for Store Owner 类似数字之类的东西
穆罕默德·哈瑟姆
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.