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


11

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

问题是,我将设置Catalog Input Type for Store Owner为Text 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.