Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


Recommended Posts

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

взято с другого форума у пользователя 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
Link to comment
Share on other sites


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

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

Спасипотому что!

Только згдесь наопотому чторот:

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

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

Link to comment
Share on other sites


  • 3 months later...
  • 2 months later...

Для версии 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)
Link to comment
Share on other sites


  • 5 months later...

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

 

в файле \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']  = 'Сначала новые товары';
может кому пригодится  :-)
Link to comment
Share on other sites


  • 2 weeks later...

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

Link to comment
Share on other sites


  • 10 months later...

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

Link to comment
Share on other sites


  • 11 months later...

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

 

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

Link to comment
Share on other sites


  • 1 year later...
  • 2 months later...

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

Link to comment
Share on other sites


  • 6 months later...

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

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

Link to comment
Share on other sites


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

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

 

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

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

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

Link to comment
Share on other sites


  • 3 months later...

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

Link to comment
Share on other sites


  • 1 month later...

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

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

Link to comment
Share on other sites


  • 5 months later...
  • 5 months later...

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

 

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

Link to comment
Share on other sites


  • 11 months later...

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

Link to comment
Share on other sites


  • 7 months later...
В 11.08.2019 в 18:19, AndreyPopov сказал:

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

 

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

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

 

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.