Автор Тема: Вопрос вывода Брендов в любой части сайта и их сортировка в foreach?  (Прочитано 203 раз)

02 Май 2022, 12:50:11
  • Пользователь
  • **
  • Сообщений: 69
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день, Уважаемое Сообщество.
Меня интересует вопрос можно ли и как вывести Бренды в любой части сайта, например на Главной странице или в cms-страницах.
И можно ли прямо в шаблоне, в цикле задать необходимую сортировку, например по дате добавления, ид, алфавиту, количеству товаров.
Если кто знает. Прошу привести конкретный пример как можно это сделать.
Также у меня был вопрос с Пагинацией в разделе Брендов. если есть модуль, который может решить эти проблемы, прошу подсказать.
Спасибо вам что вы есть.
Всем прекрасного настроения.
Благодарю.
02 Май 2022, 19:19:51
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Вывести бренды в любом месте можно с помощью модуля. Например, модуль blockmanufacturer выводит бренды в левой/правой колонке. Добавить свой хук
public function hookMyHook($params)
{
    return $this->hookLeftColumn($params);
}
и потом этот хук использовать в шаблонах tpl
{hook h='hookMyHook'}Сортировку задают в sql запросе ORDER BY
$manufacturers = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT m.*, ml.`description`, ml.`short_description`
FROM `'._DB_PREFIX_.'manufacturer` m
'.Shop::addSqlAssociation('manufacturer', 'm').'
INNER JOIN `'._DB_PREFIX_.'manufacturer_lang` ml ON (m.`id_manufacturer` = ml.`id_manufacturer` AND ml.`id_lang` = '.(int)$id_lang.')
'.($active ? 'WHERE m.`active` = 1' : '')
        .($group_by ? ' GROUP BY m.`id_manufacturer`' : '').'
ORDER BY m.`name`или id или .... ASC/DESC
'.($p ? ' LIMIT '.(((int)$p - 1) * (int)$n).','.(int)$n : ''));