如何按降序列出产品?


18

似乎很简单,但事实证明并非如此-我只想从高到低列出所有商店中的产品

为此,我去了:

Configuration -> Catalog -> Product Listing Sort by -> (I Selected) "Price"

现在,这会将所有产品从对所有产品进行排序-但似乎没有一种选择升序还是降序的方法。

我正在忽略管理区域中的某些内容,还是必须修改文件才能执行此操作?


如果我理解正确你的解释,你应该只需点击price一次列的产品分类
Mr_Green

您可以提高您的产品通过使用这个脚本排序fmeaddons.com/magento/...

Answers:


42

不能从configuration更改产品列表的默认订购方向。

但是,您可以从布局XML更改方向。

以下是一些您可以放入布局XML文件的示例,例如local.xml

<?xml version="1.0"?>
<layout version="0.1.0">
    <!-- Change default direction for simple searches -->
    <catalogsearch_result_index>
        <reference name="search_result_list">
            <action method="setDefaultDirection"><dir>desc</dir></action>
        </reference>
    </catalogsearch_result_index>

    <!-- Change default direction for advanced searches -->
    <catalogsearch_advanced_result>
        <reference name="search_result_list">
            <action method="setDefaultDirection"><dir>desc</dir></action>
        </reference>
    </catalogsearch_advanced_result>

    <!-- Change default direction for a category without layered navigation -->
    <catalog_category_default>
        <reference name="product_list">
            <action method="setDefaultDirection"><dir>desc</dir></action>
        </reference>
    </catalog_category_default>

    <!-- Change default direction for a category with layered navigation -->
    <catalog_category_layered>
        <reference name="product_list">
            <action method="setDefaultDirection"><dir>desc</dir></action>
        </reference>
    </catalog_category_layered>

    <!-- Change default direction for category with ID 3 -->
    <CATEGORY_3>
        <reference name="product_list">
            <action method="setDefaultDirection"><dir>desc</dir></action>                                   
        </reference>
    </CATEGORY_3>
</layout>

此外,您可以在后台将布局XML添加为类别的自定义设计。此设置将覆盖您在XML文件中设置的内容:

通过使用自定义设计XML设置默认的订单方向


6

问题被标记为CE 1.7.0.2,但此解决方案对1.9.1.1上的用户很有用,因此我在此处添加它。

我们遇到了一个相反的问题,当我们按价格排序时,我们需要首先展示最便宜的产品。对于OP来说,这首先不适用,因为在Magento CE 1.9中,它已经默认为降序,因此实际上是不需要的。第二个问题是选择升序还是降序的方法,可以通过XML文件或自定义布局更新来完成。在大多数情况下,后者是首选解决方案,并且大多数人会避免FTP上载XML文件以更新设置的麻烦。

在“ 目录”>“管理类别”>“ 类别” >“自定义设计”>“自定义布局更新”中是这样的

首先显示最便宜的产品,而不是最昂贵的产品 这是代码:

<reference name="product_list_toolbar">
    <action method="setDefaultDirection"><string>asc</string></action>
    <action method="setDefaultOrder"><string>price</string></action>
</reference>

要选择升序还是降序,只需将asc更改为desc即可

作为一种选择,您还可以将价格更改为所需的排序。您可以将其删除,以使其在设置为默认值的任何“产品列表排序依据”选项上默认为“ asc ”。


3

上面的解决方案似乎与CE 1.8并没有什么不同,因此我不得不通过重写code / local /.../ Catalog / Model / Category.php中的目录模型功能来解决此问题。

/**
 * Override category products collection
 * to sort by price descending
 *
 * @return Varien_Data_Collection_Db
 */
public function getProductCollection()
{  
    $collection = parent::getProductCollection()->setOrder('price', 'DESC');
    return $collection;
}

希望这可以帮助。:-)


嗨,我们可以通过toolbar.phtml文件更改当前的排序顺序吗?
Jordy S Chemparathy

在我的情况下,一个类别首先显示新产品。
Jordy S Chemparathy

3

以下xml在CE 1.8中为我工作:

<layout>
    <catalog_category_default>
      <reference name="product_list_toolbar">
          <action method="setDefaultDirection"><string>asc</string></action>
          <action method="setDefaultOrder"><string>price</string></action>
      </reference>
    </catalog_category_default>

    <catalog_category_layered>
      <reference name="product_list_toolbar">
        <action method="setDefaultDirection"><string>asc</string></action>
        <action method="setDefaultOrder"><string>price</string></action>
      </reference>
    </catalog_category_layered>

    <catalogsearch_result_index>
      <reference name="search_result_list">
        <action method="setDefaultDirection"><string>asc</string></action>
        <action method="setDefaultOrder"><string>price</string></action>
      </reference>
    </catalogsearch_result_index>
    <catalogsearch_advanced_result>
      <reference name="search_result_list">
        <action method="setDefaultDirection"><string>asc</string></action>
        <action method="setDefaultOrder"><string>price</string></action>
      </reference>
    </catalogsearch_advanced_result>
</layout>

我以为我要发布,因为上述两种解决方案在Magento 1.8(社区)中均不适用于我。

'setDefaultOrder'可以接受我认为的任何属性代码,如果您只想使用admin中的默认值,则不需要。

希望对某人有用。


1

转到/ app / code / core / Mage / Catalog / Model /路径,然后在Product.php中添加以下代码

public function getRelatedProductCollection()
    {
$collection = $this->getLinkInstance()->useRelatedLinks()
        ->getProductCollection()
        ->setIsStrongMode();
    $collection->setProduct($this);
    $collection->setOrder('price', 'DESC');
    return $collection;
    }

您也可以用它来减轻体重。只需用“重量”代替“价格”即可。对于上升,只需写上“ ASC”代替“ DESC”。


永远不要更改核心文件。
func0der
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.