我已经在SO和其他论坛上尝试了这里提到的方法,但它没有用。我正在使用Magento ver。 1.7.0.2我希望将所有Out of Stock产品移至产品列表和搜索结果页面的末尾。
以下是我的尝试:
我将Collection.php的副本从/app/code/core/Mage/Catalog/Model/Resource/Product/
复制到/app/code/local/Mage/Catalog/Model/Resource/Product/
,并在addAttributeToSort函数开头的代码下面粘贴。
$this->getSelect()->joinLeft(array('_inventory_table' => $this->getTable('cataloginventory/stock_status')), '_inventory_table.product_id = e.entity_id', array('stock_status'));
$this->getSelect()->order('stock_status DESC');
它没有用,我更喜欢可以通过magento主题完成的选项,而不是编辑核心文件并将其复制到本地目录。我怎么能这样做?
答案 0 :(得分:0)
我希望在list.phtml文件中实现更直接的方法,或者在相应的类文件中使用函数,例如Yourpackage / Yourmodule / Block / Product / List.php。
您可以使用此代码
访问每个$_product
的库存水平
$cabac_stockObject = Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product);
//get the stock levels
$cabac_stockQuantityAvailable = (int)$cabac_stockObject->getQty() - (int)$cabac_stockObject->getMinimumQty(); //returns string! Like 10.000 or 0.0000 for 10 or 0 so cast to (int)
$cabac_stockStatus = (int)$cabac_stockObject->getIsInStock(); //returns string! Like 10.000 or 0.0000 for 10 or 0 so cast to (int)
然后可以遍历集合,将产品对象和库存计数添加到数组中,按库存计数排序,然后将已排序的数组传递到list.phtml
的{{1}}循环中。
这样的事情(粗略的伪代码道歉)
foreach