Как составить список товаров в порядке убывания?

18

Это казалось простым, но доказывает обратное - я просто хочу перечислить все товары в моем магазине с высокой -> низкой

Для этого я пошел в:

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

Теперь это сортирует каждый продукт от низкого к высокому для всех продуктов - но, кажется, нет способа выбрать восходящий или нисходящий порядок.

Есть ли что-то в области администратора, которую я пропускаю, или мне нужно изменить файл, чтобы сделать это?

Reconstruct
источник
Если я правильно понял ваши объяснения, вы должны просто нажмите на 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, поэтому я добавляю его сюда.

У нас была противоположная проблема, когда нам нужно было сначала показать самые дешевые продукты при сортировке по цене. Что касается первой проблемы 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;
}

Надеюсь это поможет. :-)

user3983
источник
Привет, Можем ли мы изменить текущий порядок сортировки через файл toolbar.phtml ??
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 (Community).

'setDefaultOrder' может принимать любой код атрибута, который мне кажется, и не требуется, если вы просто хотите использовать значение по умолчанию от admin.

Надеюсь, это кому-нибудь пригодится.

микрофон-источник
источник
1

Перейдите в / app / code / core / Mage / Catalog / 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