首先,我是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社区版。
答案 0 :(得分:0)
使用->addAttributeToSort('attribute_code','sortorder')
代替setOrder()
。
sortorder
应为DESC
或ASC
和
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;
}