Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

(Решено)как добавить "сортировка по поступлению"?


 Поделиться

Рекомендованные сообщения

как добавить "сортировка по поступлению" на страницах товаров и вообще где правиться это выпадающее меню "сортировка"?

взято с другого форума у пользователя sunny8u

Меняем сортировку товаров в витрине по умолчанию
по дате добавления, имени, модели, количеству, цене или рейтингу.
Долго мучилась, нигде не могла найти информацию. Нашла - делюсь=)
З.Ы. Кстати, этот метод позволит устранить повторение одних и тех же товаров на разных страницах одной категории.
Ибо сортировка По умолчанию очень часто творит подобные гадости...
З.Ы.Ы. У меня в примере товары будут отсортированы по дате добавления, но по образцу можно сделать любой вид сортировки.
Переменные в OpenCart 1.5.4 выглядят следующим образом. Далее поймёте, где это нужно будет вставлятьwink.png

'pd.name', - сортировка по имени.
'p.model', - сортировка по модели.
'p.quantity', - сортировка по количеству.
'p.price', - сортировка по цене.
'rating', - сортировка по рейтингу.
'p.sort_order', - сортировка, которая стоит по умолчанию.
'p.date_added' - сортировка по дате добавления.

 Соответственно, для каждого типа сортировки нужно будет задать направление, это:

DESC - по убыванию,
ASC - по возрастанию.
1. Меняем тип сортировки По умолчанию на сортировку по Дате добавления (без добавления в список "Сортировать по").
Просто меняем принцип отображения товаров для метода "По умолчанию".
Открываем файл \catalog\controller\product\category.php

В самом начале файла находим вот это:

if (isset($this->request->get['sort'])) {
  $sort = $this->request->get['sort'];
  } else {
  $sort = 'p.sort_order';
  }
  if (isset($this->request->get['order'])) {
  $order = $this->request->get['order'];
  } else {
  $order = 'ASC';

и меняем

 $sort = 'p.sort_order';

на

$sort = 'p.date_added';

Для того, чтобы изменить порядок отображения (По убыванию/По возрастанию), нужно изменить

 

$order = 'ASC';

где DESC - сначала новые, потом старые,

а ASC - сначала старые потом новые.

В принципе, этого уже достаточно. Можно оставить название метода сортировки прежним "По умолчанию", а можно переименовать переменную 'text_default' в файле \catalog\language\russian\product\category.php. И радоваться жизниwink.png

 

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

Остаёмся в том же файле \catalog\controller\product\category.php.

Ищем вот этот кусок кода (примерно 200 строка):

$this->data['sorts'][] = array(
'text' => $this->language->get('text_date_desc'),
'value' => 'p.sort_order-ASC',
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.sort_order&order=ASC' . $url)
);

и добавляем сразу после него вот этот код:

 $this->data['sorts'][] = array(
        'text'  => $this->language->get('text_date_desc'),
        'value' => 'p.date_added-DESC',
        'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.date_added&order=DESC' . $url)
  );
  $this->data['sorts'][] = array(
        'text'  => $this->language->get('text_date_asc'),
        'value' => 'p.date_added-ASC',
        'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.date_added&order=ASC' . $url)
  );

Где в качестве 'text_date_desc' и 'text_date_asc' выступают наши новые названия для сортировки по дате добавления товаров в прямом и обратном порядке.

3. Чтобы настроить корректный вывод названия новых типов сортировки 'text_date_desc' и 'text_date_asc'
редактируем соответствующий языковой файл.
Для моего примера просто добавляем эти строки в файл: \catalog\language\russian\product\category.php
$_['text_date_asc'] = 'Сначала новые товары';
$_['text_date_desc']  = 'Сначала старые товары';

 

 

  • +1 4
Ссылка на комментарий
Поделиться на других сайтах


  • 1 месяц спустя...
  • 2 месяца спустя...
Для моего примера просто добавляем эти строки в файл: \catalog\language\russian\product\category.php

$_['text_date_asc'] = 'Сначала новые товары';
$_['text_date_desc']  = 'Сначала старые товары';

Спасибо!

Только здесь наоборот:

$_['text_date_asc'] = 'Сначала старые товары';

$_['text_date_desc']  = 'Сначала новые товары';

Ссылка на комментарий
Поделиться на других сайтах


  • 3 месяца спустя...
  • 2 месяца спустя...

Для версии 1.5.4.1. я менял еще строчки 219 и 220 на

'value' => 'p.date_added-DESC',
				'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.date_added&order=DESC' . $url)
Ссылка на комментарий
Поделиться на других сайтах


  • 5 месяцев спустя...

Аналогично решил как выше

 

в файле \catalog\controller\product\manufacturer.php

 

вместо

if (isset($this->request->get['sort'])) {
  $sort = $this->request->get['sort'];
  } else {
  $sort = 'p.sort_order';
  }
  if (isset($this->request->get['order'])) {
  $order = $this->request->get['order'];
  } else {
  $order = 'ASC';

ставим

if (isset($this->request->get['sort'])) {$sort = $this->request->get['sort'];
} else {
$sort = 'p.date_added';
} 


if (isset($this->request->get['order'])) {
$order = $this->request->get['order'];
} else {
$order = 'DESC';

после

$this->data['sorts'][] = array(
'text'  => $this->language->get('text_default'),
'value' => 'p.sort_order-ASC',
'href'  => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . '&sort=p.sort_order&order=ASC' . $url)
); 

добавил

 

$this->data['sorts'][] = array(
        'text'  => $this->language->get('text_date_desc'),
        'value' => 'p.date_added-DESC',
        'href'  => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . '&sort=p.date_added&order=DESC' . $url)
  );
  $this->data['sorts'][] = array(
        'text'  => $this->language->get('text_date_asc'),
        'value' => 'p.date_added-ASC',
        'href'  => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . '&sort=p.date_added&order=ASC' . $url)
  );

в файле catalog\language\russian\product\manufacturer.php

 

после

$_['text_default']      = 'По умолчанию';

добавил 

$_['text_date_asc'] = 'Сначала старые товары';$_['text_date_desc']  = 'Сначала новые товары';
может кому пригодится  :-)
Ссылка на комментарий
Поделиться на других сайтах


  • 2 недели спустя...

Подскажите пожалуйста как сделать тортировку товаров по мере добавления (новый товар на 1 месте в категории) для версии опенкарта 1.5.3.1  ??? 

Ссылка на комментарий
Поделиться на других сайтах


  • 10 месяцев спустя...

Спасибо! Очень пригодилось! Но у меня получается что первая страница категории показывается как я настраиваю (разные пробовала виды сортировки), а следующие за ней страницы снова сбиваются на первоначальную сортировку по умолчанию (при чем даже не понимаю принцип сортировки - больше похож на сортировку по алфавиту)

Ссылка на комментарий
Поделиться на других сайтах


  • 11 месяцев спустя...

Делал по дате добавление все получилось, но будьте внимательны при добавление товара, нужно равномерно распределить, а то получите дубли страниц с главной категорий если будите добавлять сразу большое количество.

 

Подскажите, как убрать товар нет в наличии в конец списка?

Ссылка на комментарий
Поделиться на других сайтах


  • 1 год спустя...
  • 2 месяца спустя...

У меня такая ситуация, все в принципе работает, но меня кидает потом сразу на главную страницу. Чуть порылся в коде, попробовал разные комбинации как ни крути скидывает на главную

Ссылка на комментарий
Поделиться на других сайтах


  • 6 месяцев спустя...

Перепробовал все способы. Все равно остается действовать старое правило сортировки "по умолчанию" хотя все поменял правильно:

if (isset($this->request->get['sort'])) {
            $sort = $this->request->get['sort'];
        } else {
            $sort = 'p.date_added';
        }

        if (isset($this->request->get['order'])) {
            $order = $this->request->get['order'];
        } else {
            $order = 'DESC';

И даже здесь

$data['sorts'][] = array(
                'text'  => $this->language->get('Дате поступления'),
                'value' => 'p.date_added-DESC',
                'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.date_added&order=DESC' . $url)
            );

 

Ничего не помогло

OpenCart 2.1.0.2

Ссылка на комментарий
Поделиться на других сайтах


В 20.08.2014 в 01:02, savilook сказал:

Аналогично решил как выше

 

в файле \catalog\controller\product\manufacturer.php

Этот способ тоже не работает в OpenCart 2.1.0.2 

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

Ссылка на комментарий
Поделиться на других сайтах


  • 3 месяца спустя...

Доброго времени суток!
А как задать сортировку по умолчанию только для отдельной конкретной категории товаров?
Заранее благодарен!

Ссылка на комментарий
Поделиться на других сайтах


  • 1 месяц спустя...

Ну не ужели ни кто не может сделать модуль, добавляющий сортировку по дате( именно переключателем, а не только по умолчанию)  на всех возможных страницах?

С удовольствием бы купил.

Ссылка на комментарий
Поделиться на других сайтах


  • 5 месяцев спустя...
  • 5 месяцев спустя...

Спасибо автору, но у меня вопрос!

 

Применяю все для latest.php (раздел Новинки) в версии 1.5.6. В итоге товары выводит те что нужно (т.е. последние 100 товаров), но сортировка внутри этих товаров все равно по алфавиту, а хотелось бы конкретно: 1 позиция - самый последний добавленный товар, 2 позиция - товар добавленный до него и т.д., а не просто по алфавиту всех недавно добавленных товаров. :(

Ссылка на комментарий
Поделиться на других сайтах


  • 11 месяцев спустя...

Спасибо автору на 2.1.0.1 пункт 1 сработал, сортировка по умолчанию по дате наполнения. 2 пункт не делала во вкладку не выводила, может там затык какой то о котором пишут. но по первому всё ок, наконец то я вижу последний залитый товар, а не наоборот. 

Ссылка на комментарий
Поделиться на других сайтах


  • 7 месяцев спустя...
В 11.08.2019 в 18:19, AndreyPopov сказал:

может кому пригодится
проверено на
OpenCart 3.x + Journal 3.x

 

А не подскажите, как выставить это значение по умолчанию?...
 

sort-by-newest-variant-add.ocmod.xml 4 \u043a\u0411 · 89 downloads

 

Ссылка на комментарий
Поделиться на других сайтах


В 02.09.2021 в 01:59, mRozko сказал:

А не подскажите, как выставить это значение по умолчанию?...

в этой теме вроде как разжевали

Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.