Magento - Сортировать по позиции и имени? - PullRequest
5 голосов
/ 12 ноября 2010

Можно ли отсортировать по позиции A и затем B эти продукты в алфавитном порядке.

У меня есть новые товары и товары для продажи, которые входят в категорию, и они сначала показывают все новые, а затем и все распродажи.

Но мне нужно отсортировать это по имени.

Ответы [ 4 ]

15 голосов
/ 12 ноября 2010

В админке

Перейдите на Управление категориями , выберите категорию, затем на вкладке продуктов укажите для каждой номер позиции.Они будут отсортированы в соответствии с этим порядком.

Программно

Это можно сделать, вызвав для каждого заказа метод addAttributeToSort коллекции продуктов.

Например, где бы вы ни находились в шаблоне, $_category->getProductCollection() или $_product->getCollection(), вы можете добавить ->addAttributeToSort('position')->addAttributeToSort('name') сразу после него.

addAttributeToSort() также принимает направление в качестве второго параметра, так что вы можете иметьили addAttributeToSort('name', 'asc') или addAttributeToSort('name', 'desc').

3 голосов
/ 22 октября 2015

Лучший способ сделать это без изменения каких-либо основных файлов - это скопировать файл Toolbar.php, расположенный:

/app/code/core/Mage/Catalog/Block/Product/List/Toolbar.php

, а затем создать новый путь к каталогу (если вы его еще не создали) в:

/app/code/local/Mage/Catalog/Block/Product/List/Toolbar.php

Теперь замените следующее из строки 232:

    if ($this->getCurrentOrder()) {
        $this->_collection->setOrder($this->getCurrentOrder(), $this->getCurrentDirection());
    }

на

if ($this->getCurrentOrder()) {
if(($this->getCurrentOrder())=='position'){ //defines the sort option
//sort by position (ascending) and entity_id (descending)
$this->_collection->addAttributeToSort('position','asc')->addAttributeToSort('entity_id','desc');
} else {
$this->_collection->setOrder($this->getCurrentOrder(),$this->getCurrentDirection());
}
}

Наконец, переиндексируйте и обновите кэш на вашем бэкенде Magento и на вашемидти.Если вам нужно определить более одной опции сортировки, скопируйте и вставьте приведенный ниже код непосредственно перед }, иначе {

if(($this->getCurrentOrder())=='######'){ //defines the sort option
//sort by ###### (ascending) and ###### (descending)
$this->_collection->addAttributeToSort('######','asc')->addAttributeToSort('######','desc');
0 голосов
/ 13 ноября 2015

В ответ на clockworkgeek,

Товар может иметь несколько атрибутов.Когда вы присваиваете каждому товару одну позицию, это относится к 1 атрибуту.Кроме того, вам необходимо будет выбрать позицию для каждого продукта.

Проблема здесь в том, что выпадающий список на странице списков продуктов предлагает вам возможность выбрать один из нескольких атрибутов.Например:

Размер: S, M, L, XL

При выборе атрибута по умолчанию сортируется этот атрибут по алфавиту, который не имеет смысла (L, M, SXL).Вместо этого я хотел бы использовать для сортировки ту же позицию атрибута-опции (s = 1, m = 2, l = 3, xl = 4).

У меня сложилось впечатление, чтовозможно, выполнив объединение и заказ в коллекциях Magento.Вы знаете, как получить эти значения или выполнить сортировку таким образом?

0 голосов
/ 30 мая 2015

Вместо кодирования, Вы можете сделать это от конца администратора. Войдите в свою панель администратора Перейдите Система ---> Конфигурация и выберите Каталог на левой вкладке.

Затем перейдите на вкладку Fronend справа. Перейти к Список продуктов Сортировать по и выбрать Имя из раскрывающегося списка и сохранить конфигурацию.

Сделать сортировку относительно легкой. На рынке magento доступно расширение. Это расширение поможет вам перетаскивать продукты на позицию по нашему желанию. Я предоставил ссылку на расширение ниже

http://www.magentocommerce.com/magento-connect/product-sorting-sequence-drag-and-drop.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...