Автор Тема: Сортировка товаров в категориях  (Прочитано 2290 раз)

15 Апрель 2013, 14:58:45
  • Новичок
  • *
  • Сообщений: 19
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Уважаемые профессионалы, подскажите, какая функция отвечает за сортировку товаров в категории и в каком файле она находится? Версия Prestashop 1.5.2
15 Апрель 2013, 21:10:17
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Функция :
public function productSort()в файле FrontController.php
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
16 Апрель 2013, 11:16:45
Ответ #2
  • Новичок
  • *
  • Сообщений: 19
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Мне необходимо, чтобы товары со значением переменной «Доступен для заказа=0»  выводились в конце после товаров со значением 1.
Если не ошибаюсь за это должен отвечать classes/category.php и функция getProducts, в строке 664

$sql .= ' ORDER BY '.(isset($order_by_prefix) ? $order_by_prefix.'.' : '').'`'.pSQL($order_by).'` '.pSQL($order_way).'
LIMIT '.(((int)$p - 1) * (int)$n).','.(int)$n;

Менял на

$sql .= ' ORDER BY p.`available_for_order`,'.(isset($order_by_prefix) ? $order_by_prefix.'.' : '').'`'.pSQL($order_by).'` '.pSQL($order_way).'
LIMIT '.(((int)$p - 1) * (int)$n).','.(int)$n;

Ничего не изменилось. Подскажите куда копать?
16 Апрель 2013, 14:54:09
Ответ #3
  • Фрилансер
  • *
  • Сообщений: 176
  • Репутация: +0/-0
    • Просмотр профиля
Функция :
public function productSort()в файле FrontController.php
Функция сортировки productSort использует значения из админки.
// $this->orderBy = Tools::getProductsOrder('by', Tools::getValue('orderby'));
// $this->orderWay = Tools::getProductsOrder('way', Tools::getValue('orderway'));
// 'orderbydefault' => Tools::getProductsOrder('by'),
// 'orderwayposition' => Tools::getProductsOrder('way'), // Deprecated: orderwayposition
// 'orderwaydefault' => Tools::getProductsOrder('way'),
class Tools
/**
* Get products order field name for queries.
*
* @param string $type by|way
* @param string $value If no index given, use default order from admin -> pref -> products
* @param bool|\bool(false)|string $prefix
*
* @return string Order by sql clause
*/
public static function getProductsOrder($type, $value = null, $prefix = false)
{
Добавить нужно еще одно значение по полю "available_for_order" из таблицы "ps_product p"