通过Magento中的自定义模块更改产品显示顺序

时间:2014-06-05 14:39:51

标签: php magento magento-1.8

首先,我是Magento的新手,并尝试在其中创建一个模块。它显示一些产品,并根据属性按特定顺序对它们进行排序。这是块的代码

class Your_Block_Name extends Mage_Core_Block_Template {

    public function getProducts() {
        $collection = Mage::getModel('catalog/product')->getCollection()
                ->addAttributeToSelect("*")
                ->addFieldToFilter('status', '1')
                ->addFieldToFilter('my_attribute', array("notnull" => true))
                ->setOrder('my_attribute', 'whatever is the order');             
        return $collection;
    }
}

在.phtml文件中,我调用上面的函数并显示产品,一切正常。这是.phtml文件的代码

<?php
$product_collection = $this->getProducts($sort_order);
foreach ($product_collection as $product) {
  //your code
}  
?>

现在我需要在模板中放置一个链接或按钮或下拉列表,点击该链接/按钮/下拉列表后我想更改显示顺序。我不知道如何实现这一目标。我不知道如何将该链接中的值传递给BLOCK或控制器,以便更改显示顺序。我不知道实现这一目标的最佳方式是什么。

顺便说一句,我正在使用Magento社区版。

1 个答案:

答案 0 :(得分:0)

使用->addAttributeToSort('attribute_code','sortorder')代替setOrder()sortorder应为DESCASC

public function getProducts($sortOrder='DESC') {
        $collection = Mage::getModel('catalog/product')->getCollection()
                ->addAttributeToSelect("*")
                ->addFieldToFilter('status', '1')
                ->addFieldToFilter('my_attribute', array("notnull" => true))
                ->addAttributeToSort('attribute_code',$sortOrder);             
        return $collection;
    }