Сортировка товаров в каталоге

#
Сортировка товаров в каталоге
Где модифицировать запрос на сортировку вывода товаров в категории?
В админке Структура сайта - Типовые динамические страницы
Во вкладках Настройка страницы, Код страницы, этой возможности не нашёл.
#
Re: Сортировка товаров в каталоге
Сортировка товаров указывается при редактировании магазина https://www.hostcms.ru/documentation/modules/shop/add/
Если хотите указать нестандартную сортировку то нужно вносить код в ТДС магазина. Примеры:
https://www.hostcms.ru/documentation/modules/shop/frontend/sorting/
https://www.hostcms.ru/documentation/modules/shop/frontend/order-and-filter-with-discounts/

«Не выходи из комнаты, не совершай ошибку…»
#
Re: Сортировка товаров в каталоге
Не могу найти код что идёт до файла lib_84.php в котором вся логика идёт.
В конце файла код:

$Shop_Controller_Show
   ->xsl(
      Core_Entity::factory('Xsl')->getByName($xslName)
   )
   // Выводить свойства товаров
   ->itemsProperties(TRUE)
   // Выводить специальные цены
   ->specialprices(TRUE)
   // Выводить модификации на уровне с товаром
   //->modificationsList(TRUE)
   // Режим вывода групп
   //->groupsMode('none')
   // Выводить доп. св-ва групп
   ->groupsProperties(TRUE)
   ->viewed(FALSE)
   ->show();

До этого идёт конструкции типа:

/**
* Вывод аналогов товара исходя из его артикула
*
* @author Serikov Konstantin, KAD Systems (©) 2017   
* @date 19-05-2017   
* Начало >>
*/

$oShopItem = Core_Entity::factory('shop_item', $Shop_Controller_Show->item);
$sMarking = $oShopItem->marking;
$oItems = Core_Entity::factory('shop_item');
$oItems->queryBuilder()
         ->where(Core_QueryBuilder::expression('REPLACE(marking, ".", "-")'), '=', str_replace('.', '-', $sMarking))
         ->where('id', '!=', $Shop_Controller_Show->item)
         ->where('modification_id', '!=', $Shop_Controller_Show->item)
         ->where('id', '!=', $oShopItem->modification_id)
            ->orderBy('marking', 'DESC');
$aoItems = $oItems->findAll();

if(count($aoItems))
{
   $Core_Xml_Entity = Core::factory('Core_Xml_Entity')->name('analogs');
   foreach ($aoItems as $oItem)
   {
      $oItem->showXmlModifications(FALSE);
      $Core_Xml_Entity->addEntity($oItem);
   }
   $Shop_Controller_Show->addEntity($Core_Xml_Entity);
}
/**
* << Конец
* @author Serikov Konstantin, KAD Systems (©) 2017   
* @date 19-05-2017
*/
#
Re: Сортировка товаров в каталоге
Что именно вы не можете найти?  Вставлять код сортировки нужно перед блоком с    ->show();
«Не выходи из комнаты, не совершай ошибку…»
#
Re: Сортировка товаров в каталоге
Если сделать так:

$Shop_Controller_Show
   ->xsl(
      Core_Entity::factory('Xsl')->getByName($xslName)
   )
   // Выводить свойства товаров
   ->itemsProperties(TRUE)
   // Выводить специальные цены
   ->specialprices(TRUE)
   // Выводить модификации на уровне с товаром
   //->modificationsList(TRUE)
   // Режим вывода групп
   //->groupsMode('none')
   // Выводить доп. св-ва групп
    ->orderBy('marking', 'ASC')
   ->groupsProperties(TRUE)
   ->viewed(FALSE)
    ->show();

То получаем ошибку:
Exception: The method 'orderBy' does not exist in 'Shop_Controller_Show'
36 modules/core/exception.php
177 modules/core/servant/properties.php
672 hostcmsfiles/lib/lib_84/lib_84.php
672 hostcmsfiles/lib/lib_84/lib_84.php
271 modules/lib/model.php
166 modules/core/page.php
441 modules/kad/template.php
35 templates/template22/template.htm
96 modules/template/model.php
166 modules/core/page.php
441 modules/kad/template.php
265 templates/template21/template.htm
96 modules/template/model.php
166 modules/core/page.php
496 modules/core/command/controller/default.php
194 modules/core/router/route.php
239 index.php
#
Re: Сортировка товаров в каталоге
Все верно. Вы почему-то только  одну строчку из примеров скопировали. Перед

$Shop_Controller_Show
   ->xsl(
      Core_Entity::factory('Xsl')->getByName($xslName)
   )


вставьте :


$Shop_Controller_Show
    ->shopItems()
    ->queryBuilder()
    ->orderBy('shop_items.marking', 'ASC');
«Не выходи из комнаты, не совершай ошибку…»
#
Re: Сортировка товаров в каталоге
Норм.
А как нам теперь сделать сортировку примерно вот такую:
ORDER BY SUBSTRING(`shop_items`.`marking`, POSITION('-' IN `shop_items`.`marking`)) ASC
#
Re: Сортировка товаров в каталоге
https://www.hostcms.ru/documentation/modules/core/querybuilder/

Пункт "Сложные выражения"
«Не выходи из комнаты, не совершай ошибку…»
#
Re: Сортировка товаров в каталоге
Нагородил чт-то такое,

$Shop_Controller_Show
    ->shopItems()
    ->queryBuilder()
    ->orderBy(Core_QueryBuilder::expression('SUBSTRING(`shop_items`.`marking`, POSITION(\'-\' IN `shop_items`.`marking`))'), 'DESC');

Ошибок нет, но и изменений тоже не видно.
Как нить можно получить запрос итоговый что получился?
#
Re: Сортировка товаров в каталоге
А нет, работает. Но вопрос про как получить сам запрос остаётся открытым.
Авторизация