我已经通过stock_status对我的类别列表进行了排序。换句话说,我在底部缺货。 但是我还需要在我之前插入一些代码来分类那些只缺货的产品。
例如:
Product1 have Qty=0 and product_views attribute=97
Product2 have Qty=0 and product_views attribute=902
Product3 have Qty=0 and product_views attribute=75
Product4 have Qty=35 and product_views attribute=1500
Product5 have Qty=398 and product_views attribute=5298
Product6 have Qty=275 and product_views attribute=17
现在我有这个结果,如果我按名称排序:
Product4
Product5
Product6
Product1
Product2
Product3
这对我来说太棒了,因为我需要按照名称(或通常在前端中的任何其他选择)对库存产品进行排序,但同时我需要按product_views属性对库存产品进行排序。
我需要将列表排序为这样(例如,如果我按照名称选择前端排序):
Product4
Product5
Product6 (this is in stock products that because it must be sorted as usually based on choice of selectbox in frontend)
Product2
Product1
Product3 (this is out of stock products that because it must be sorted by product_views attrubute - most viewed in top)
现在我使用此代码进行二级排序(我要求您通过product_views找到1级排序。但必须仅对缺货产品进行排序):
try {
$websiteId = Mage::app()->getStore()->getWebsiteId();
if (Mage::helper('catalog')->isModuleEnabled('Mage_CatalogInventory')) {
$stockStatusFieldExisted = Mage::helper('webpiercom_outofstockmastmndmostviewed_catalog')->checkFieldExisted($collection->getSelect(), 'stock_status');
if(!$stockStatusFieldExisted) {
$collection->joinTable(
array('wprdc' => 'cataloginventory/stock_status'),
'product_id=entity_id',
array('stock_status'),
array('website_id' => $websiteId),
'left'
);
}
}
$collection->getSelect()->order('stock_status desc');
}
答案 0 :(得分:0)
我正在调整我的app / local / Mage / Catalog / Product / list / toolbar.php。
寻找setCollection
函数。
电话是
$this->_collection->setOrder(
$this->getCurrentOrder(),
$this->getCurrentDirection())
您可以叠加排序顺序。 既然您首先需要股票,我建议您做一些像
这样的事情$this->_collection
->setOrder('stock_status', 'desc')
->setOrder(
$this->getCurrentOrder(),
$this->getCurrentDirection());
这是未经测试的,因为我没有在我的任何网站上使用过滤器,但我将此技术与其他字段名称一起使用以强制默认的第二级和第三级排序。