我制作了产品属性,并将其分配给属性集,以便其显示在管理产品详细信息页面中。基于此产品属性,我在类别页面上对产品集合进行排序。
问题是,我将设置Catalog Input Type for Store Owner
为Text field
。我将必须为每个产品设置数值,以便基于此属性对产品集合进行排序。它从1-9正常工作,但是当我将计数增加到9以上(例如10、11等)时,它将破坏排序。可能是因为字段类型不是数字类型
任何帮助,经验和知识共享将不胜感激。
我制作了产品属性,并将其分配给属性集,以便其显示在管理产品详细信息页面中。基于此产品属性,我在类别页面上对产品集合进行排序。
问题是,我将设置Catalog Input Type for Store Owner
为Text field
。我将必须为每个产品设置数值,以便基于此属性对产品集合进行排序。它从1-9正常工作,但是当我将计数增加到9以上(例如10、11等)时,它将破坏排序。可能是因为字段类型不是数字类型
任何帮助,经验和知识共享将不胜感激。
Answers:
请尝试使用自定义插件尝试以下方式,因此请在您的自定义扩展程序中添加插件代码,如下所示
/供应商/模块/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];
}
}
如果您遇到任何问题,请尝试让我知道。
int
?没有Catalog Input Type for Store Owner
类似数字之类的东西
1-9
在自定义产品属性中输入值时,效果很好,但是当我从9(如10、11)中增加值时,它会像我在问题中说的那样破坏排序。无论如何,感谢您的回答。为您的努力。+1