是否可以按A排序,然后按字母顺序显示B这些产品。
我有新产品和销售产品进入一个类别,他们首先显示所有新产品和所有销售产品。
但我需要按名称排序。
答案 0 :(得分:14)
在管理员
转到管理类别,选择类别,然后在其产品标签上为每个人提供一个位置编号。它们将按照该顺序排序。
<强>编程强>
您可以通过为每个订单调用产品集合的addAttributeToSort
方法来执行此操作。
例如,无论您在模板中看到$_category->getProductCollection()
还是$_product->getCollection()
,都可以在其后立即添加->addAttributeToSort('position')->addAttributeToSort('name')
。
addAttributeToSort()
也会将方向作为第二个参数,因此您可以addAttributeToSort('name', 'asc')
或addAttributeToSort('name', 'desc')
。
答案 1 :(得分:3)
在不更改任何核心文件的情况下,最好的方法是复制位于以下位置的Toolbar.php文件:
/app/code/core/Mage/Catalog/Block/Product/List/Toolbar.php
然后在:
下创建一个新的目录路径(如果你还没有创建一个)/app/code/local/Mage/Catalog/Block/Product/List/Toolbar.php
现在从第232行替换以下内容:
if ($this->getCurrentOrder()) {
$this->_collection->setOrder($this->getCurrentOrder(), $this->getCurrentDirection());
}
到
if ($this->getCurrentOrder()) {
if(($this->getCurrentOrder())=='position'){ //defines the sort option
//sort by position (ascending) and entity_id (descending)
$this->_collection->addAttributeToSort('position','asc')->addAttributeToSort('entity_id','desc');
} else {
$this->_collection->setOrder($this->getCurrentOrder(),$this->getCurrentDirection());
}
}
最后,重新索引并刷新Magento后端的缓存并准备就绪。如果您需要定义多个排序选项,请复制并粘贴下面的代码} else {
if(($this->getCurrentOrder())=='######'){ //defines the sort option
//sort by ###### (ascending) and ###### (descending)
$this->_collection->addAttributeToSort('######','asc')->addAttributeToSort('######','desc');
答案 2 :(得分:0)
您可以从管理员端进行编码,而不是编码。登录您的管理员 转到系统---&gt;配置,然后从左侧选项卡中选择目录。
然后点击右侧的 Fronend 标签。转到产品Lisiting按排序,然后从下拉列表中选择 Name 并保存配置。
使分类相对容易。在magento市场有一个扩展。此扩展程序将帮助您根据我们的愿望将产品拖放到该位置。我提供了下面的扩展链接
http://www.magentocommerce.com/magento-connect/product-sorting-sequence-drag-and-drop.html
答案 3 :(得分:0)
回应clockworkgeek,
产品可以具有多个属性。为每个产品分配一个位置时,它与1个属性相关。此外,您需要确定每种产品的位置。
此处的问题是,产品详情页面上的下拉列表为您提供了选择多个属性之一的机会。例如:
尺寸:S,M,L,XL
当你选择一个属性时,默认是按字母顺序排列那个没有意义的属性(L,M,S,XL)。相反,我想使用属性选项(s = 1,m = 2,l = 3,xl = 4)的相同位置进行排序。
我的印象是,通过在Magento集合中执行连接和排序,可以实现这一点。你知道如何获得这些价值观或者做那样的排序吗?