Як перераховувати товари у порядку зменшення?


18

Це здавалося простим, але доводить інакше - я просто хочу перерахувати всі товари в моєму магазині від високих -> низьких

Для цього я перейшов до:

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

Тепер це сортує кожен продукт від низького до високого для всіх продуктів - але, здається, не існує способу вибору порядку зростання - по низхідному.

Чи є щось у зоні адміністратора, яку я оглядаю, або мені потрібно змінити файл, щоб це зробити?


Якщо я правильно зрозумів ваше пояснення, вам слід просто натиснути priceстовпчик ще раз, щоб сортувати продукти від високого до низького .
Mr_Green

Ви можете покращити сортування своїх продуктів, скориставшись цим сценарієм fmeaddons.com/magento/…

Відповіді:


42

Ви не можете змінити напрямок на замовлення по замовчуванням для списків продуктів від конфігурації .

Однак ви можете змінити напрямок від макета 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, тому я додаю його тут.

У нас була протилежна проблема, коли нам потрібно було спочатку показати найдешевші продукти при сортуванні за ціною. Для першої турботи ОП це не стосується, оскільки в Magento CE 1.9 він вже за замовчуванням зменшується, тому це насправді не потрібно. Друге питання - спосіб вибору висхідного порівняно зі зменшенням, це можна зробити через XML-файл або оновлення користувальницької макети. Останнє є кращим рішенням у більшості випадків, і більшість людей уникають клопоту FTP'ing завантажувати XML-файл для оновлення налаштувань.

Ось як це виглядає в Каталозі> Керування категоріями> Категорія > Спеціальний дизайн> Оновлення власної макети :

Показує спочатку найдешевші продукти, НЕ найдорожчі Ось код:

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

Щоб вибрати по зростанню по спадаючій проти, тільки зміни зростання по алфавітом .

Як варіант, ви також можете змінити ціну на сортування, яке вам потрібно. Ви можете видалити його, щоб він за замовчуванням піднявся на будь-який сортування списку продуктів за опцією, встановленою за замовчуванням.


3

Наведені вище рішення, схоже, не мали різниці з CE 1.8, тому мені довелося вирішити цю проблему, змінивши функціональність каталогічної моделі в коді / локальний /.../ Каталог / Модель / 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' може приймати будь-який код атрибутів, який я думаю, і не потрібен, якщо ви просто хочете використовувати типовий параметр від адміністратора.

Сподіваюся, комусь це корисно.


1

Перейдіть у / app / code / core / Mage / Catalogue / Model / path і додайте наведений нижче код у Product.php

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

Ви також можете використовувати це для ваги. Просто напишіть "вага" замість "ціни". Для підйому просто напишіть "ASC" замість "DESC".


ніколи не змінюйте основні файли.
func0der
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.