【问题标题】:Magento attributes with different sorting具有不同排序的 Magento 属性
【发布时间】:2012-10-08 13:33:46
【问题描述】:

我是 php 新手,我想要的是如果我可以通过在文件中执行类似的操作将排序顺序定义为仅按价格显示的产品

Mage_Adminhtml_Model_System_Config_Source_Catalog_ListSort

$options[] = array(
    'label' => Mage::helper('catalog')->__('Price'),
    'value' => 'price'
    'getCurrentDirection' => 'asc'
);

其余属性按降序排列。

不幸的是,似乎无法正常工作。 有人可以帮忙吗?

【问题讨论】:

  • 我不明白你的问题。请尝试更清楚地描述问题和您的想法。谢谢。

标签: magento sorting attributes


【解决方案1】:

我认为您正在查找错误的文件。您在上面描述的 ListSort 文件仅列出了排序依据的可用选项。它对当前排序没有任何作用。

此外,您引用的文件位于 Adminhtml 范围内。如果您需要更改前端的默认排序,您应该寻找其他地方。

如果我理解正确,您的问题是如果选择价格作为排序依据,如何默认排序 ASC,而默认排序 DESC 是另一个用于排序依据的属性。

对于前端,您应该查看 Mage_Catalog_Block_Product_List_Toolbar 文件中的 getCurrentOrder() 函数。在这里,您可以使用默认方向和排序顺序。破解 app/core/Mage 文件不是一个好习惯,但您可以复制此文件并将其放在 app/local/Mage/* (与核心文件完全相同的目录)中,它会自动重载默认方法。

对于后端,您可以查看 Mage_Adminhtml_Block_Widget 文件中的 _prepareCollection() 函数。默认排序是“desc”,因此您只需将价格更改为“asc”即可。在这里,您也应该在 app/local/Mage/* 中进行复制。你可以尝试这样的事情(对于 Magento 1.7.1.0,这是第 507-508 行):

改变

$columnId = $this->getParam($this->getVarNameSort(), $this->_defaultSort);
$dir      = $this->getParam($this->getVarNameDir(), $this->_defaultDir);

$columnId = $this->getParam($this->getVarNameSort(), $this->_defaultSort);
if($this->getVarNameSort() == 'price') {
    $dir      = $this->getParam($this->getVarNameDir(), 'asc');
} else {
    $dir      = $this->getParam($this->getVarNameDir(), $this->_defaultDir);
}

我希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多