我已经在管理面板中对每个类别中的产品进行了排序。它在前端不起作用,但在主页上一切都很好。我检查了这个链接,我想知道如何使其按位置STACK QUE 强制排序
我在网格视图中也引用了相同的list.phtml。有人能帮我吗?非常感谢。
以防万一有人遇到同样的错误。这是我设法使其发挥作用的解决方案。首先,您需要从图像核心复制Toolbar.php并将其粘贴到本地图像池中,然后找到函数setCollection并用以下代码替换它:
public function setCollection($collection)
{
$this->_collection = $collection;
$this->_collection->setCurPage($this->getCurrentPage());
// we need to set pagination only if passed value integer and more that 0
$limit = (int)$this->getLimit();
if ($limit) {
$this->_collection->setPageSize($limit);
}
if ($this->getCurrentOrder()) {
if(($this->getCurrentOrder())=='position'){
$this->_collection->setOrder('position','asc');
}
else {
$this->_collection->setOrder($this->getCurrentOrder(),$this->getCurrentDirection());
}
}
return $this;
}
要按位置创建排序,请在app/design/frontend//default/template/controlog/product/list.phtml中获取产品集合后编写以下代码
$_productCollection = new Varien_Data_Collection();
$sortedCollection = array();
foreach ($_defaultProductCollection as $key => $_product) {
if(!isset($sortedCollection[$positions[$_product->getId()]])){
$sortedCollection[$positions[$_product->getId()]] = array();
}
$sortedCollection[$positions[$_product->getId()]][] = $_product;
}
ksort($sortedCollection);
foreach ($sortedCollection as $_products) {
foreach ($_products as $_product) {
$_productCollection->addItem($_product);
}
}
希望对你有用。