Перейти к содержанию
IrinaAntonenko

как сделать сортировку товара по умолчанию по дате поступления товара?

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

У меня версия ocStore 2.1.0.2.

как сделать сортировку товара по умолчанию по дате поступления товара?

 

Поделиться сообщением


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

В фале /catalog/controller/product/category.php найдите

 

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

И поменяйте p.sort_order на p.date_added

 

В зависимости от того должен товар выводится по возрастанию или убыванию, ищем

 

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

ASC - по возрастанию, DESC - по убыванию.

 

Должно работать, просто под рукой демки нет 2.1.0.2. Если не поможет, скиньте содержимое /catalog/controller/product/category.php 

Изменено пользователем Shagrath
  • +1 1

Поделиться сообщением


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

 

В фале /catalog/controller/product/category.php найдите

 

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

И поменяйте p.sort_order на p.date_added

 

В зависимости от того должен товар выводится по возрастанию или убыванию, ищем

 

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

ASC - по возрастанию, DESC - по убыванию.

 

Должно работать, просто под рукой демки нет 2.1.0.2. Если не поможет, скиньте содержимое /catalog/controller/product/category.php 

 

всеравно остается по умолчанию сортировка по алфавиту. и вообще в списке сортировки на сайте нет сортировки по дате поступления... файл в прикреплении

category.php

  • +1 1

Поделиться сообщением


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

Действительно не доглядел. Нужно ещё

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

заменить на 

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

У себя на 2.0.3.1 проверил, работает. Только у меня файл оригинала затрагивает один из модификаторов, поэтому изменения вступают в силу только после обновления кэша модификаторов.

 

Ну и проверьте на всякий случай в файле catalog/model/catalog/product.php

 

наличие p.date_added

$sort_data = array(
'pd.name',
'p.model',
'p.quantity',
'p.price',
'rating',
'p.sort_order',
'p.date_added'
);
Изменено пользователем Shagrath

Поделиться сообщением


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

извините за глупый вопрос, а как очистить кеш модификаторов?

я все сделала как описано и все равно ничего не отображается. все как было

Поделиться сообщением


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

Скорее не очистить а обновить. В админпанели Модули-Модификаторы и нажать кнопку "Обновить"

Поделиться сообщением


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

у меня ошыбка на сайте 

Notice: Undefined variable: sort in D:\OpenServer\domains\new\system\storage\modification\catalog\controller\product\category.php on line 190Notice: Undefined variable: sort inD:\OpenServer\domains\new\system\storage\modification\catalog\controller\product\category.php on line 500

Поделиться сообщением


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

Скорее не очистить а обновить. В админпанели Модули-Модификаторы и нажать кнопку "Обновить"

category.php

Поделиться сообщением


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

Ну тут явно неправильное применение тех правок которые я рекомендовал. Как минимум обратите внимания на строки 18-22 и 24-28, ничего не смущает? Если есть желание что бы заработало как нужно, возьмите чистый файл из дистрибутива, и в нём сделайте те правка о которых я писал, только внимательно.

В фале /catalog/controller/product/category.php найдите

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

И поменяйте p.sort_order на p.date_added

 

Ищем

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

ASC меняем на DESC что бы сортировка была по убыванию.

 

А так же

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

заменить на 

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

Поделиться сообщением


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

Ну тут явно неправильное применение тех правок которые я рекомендовал. Как минимум обратите внимания на строки 18-22 и 24-28, ничего не смущает? Если есть желание что бы заработало как нужно, возьмите чистый файл из дистрибутива, и в нём сделайте те правка о которых я писал, только внимательно.

В фале /catalog/controller/product/category.php найдите

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

И поменяйте p.sort_order на p.date_added

 

Ищем

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

ASC меняем на DESC что бы сортировка была по убыванию.

 

А так же

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

заменить на 

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

Спасибо Вам большое! Исправила ошибку, Все работает хорошо.

Поделиться сообщением


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

А где там это и как сделать? Мне нужно убрать только один пункт а не все меню

Поделиться сообщением


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

Очень интересный вопрос, но вообще не понятный!!! Постарайтесь изложить вопрос ясней, хотя в данной теме ни о каком удалении и тем более удалении меню, хоть частично хоть полностью, не шло речи... 

Поделиться сообщением


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

На 1.5.5.1.2 тоже заработало.

 

Файл /catalog/controller/product/category.php:

 

Тут p.sort_order заменить на p.date_added:

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

 Тут ASC меняем на DESC:

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

Тут p.date_added-DESC на p.date_added-DESC. А также p.sort_order&order=ASC на p.sort_order&order=DESC:

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

Теперь сортирует в категории (и в подкатегории )по умолчанию начиная с самых новых товаров и заканчивая самыми старыми.

Изменено пользователем Lilya

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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