【发布时间】:2011-01-26 05:41:15
【问题描述】:
如何通过从后端设置一些偏好来更改前端(网格或列表)中的产品显示顺序?我想它应该不是默认 Magento 显示订单属性中的最佳值和名称。
我尝试创建一个名为 display_order 的新属性,每个产品都根据产品需要在前端显示的值保存一个值。但是,它不起作用。请帮我解决这个问题。
【问题讨论】:
标签: magento magento-1.4
如何通过从后端设置一些偏好来更改前端(网格或列表)中的产品显示顺序?我想它应该不是默认 Magento 显示订单属性中的最佳值和名称。
我尝试创建一个名为 display_order 的新属性,每个产品都根据产品需要在前端显示的值保存一个值。但是,它不起作用。请帮我解决这个问题。
【问题讨论】:
标签: magento magento-1.4
您需要扩展Mage_Catalog_Block_Product_List 块,以便为getProductCollection() 方法提供您自己的功能。大概是这样的:
class ... extends Mage_Catalog_Block_Product_List {
function getProductCollection() {
parent::getProductCollection()->addAttributeToSort('display_order', 'ASC')
}
}
然后,当然,您必须更新您的自定义控制器上的布局 xml 文件(除非您希望所有产品列表屏幕都像这样)以使用您的新块而不是 Magento 默认catalog/product_list.
【讨论】:
你为什么不使用 Magento 排序的东西?
在您的类别中,在类别产品下,您可以选择最后一列中的排序顺序。要通过 php 执行此操作,只需制作一个您需要启动一次的自定义脚本。
$collection = 'Your product collection';
$result = array();
foreach ($collection as $product) {
$sort = 'Your way of calculating the desired sorting';
$result[$product->getId()]=$sort;
}
Mage::getModel('catalog/category')->load('your category id')->setPostedProducts($result)->save();
就是这样:)
【讨论】:
要更改显示顺序,首先您需要将默认排序选项设置为位置。这可以从 magento 管理员配置中完成。之后您需要为所有从值 1 开始的产品设置位置。
我遇到了以下模块,这将使这项任务变得非常容易,只需从管理类别本身拖放产品即可。请检查以下扩展
http://www.blackqubers.com/extensions/product-sorting-drag-and-drop.html
希望对你有帮助
【讨论】: