Соединяем EasyComm и mFilter2
Всем привет, и сразу к делу (кстати пишу первый раз тут, если будут ошибки — исправим).
Довольно таки часто требуется в интернет магазинах или каталогах добавить возможность пользователям писать отзывы о товарах, с этим очень хорошо справляется компонент EasyComm. Но очень часто возникает и смежная задача, слепить EasyComm с mFilter2, а именно сделать сортировку по количеству отзывов или по рейтингу товара. Выкладываю готовое решение.
Добавляем в вызов mFilter2 следующий код:
Сортируем например с помощью параметра sort, так же в вызове mFilter2 добавляем
Или даем пользователю возможность выбирать, по какому параметру сортировать. Вставляем в шаблоне с сортировкой еще 2 строки
Ну и разумеется, вместо «по рейтингу, по отзывам», если необходимо, пишем термин словаря.
Так же теперь можно пользоваться плейсхолдерами в шаблоне товара
Всем удачи!
Довольно таки часто требуется в интернет магазинах или каталогах добавить возможность пользователям писать отзывы о товарах, с этим очень хорошо справляется компонент EasyComm. Но очень часто возникает и смежная задача, слепить EasyComm с mFilter2, а именно сделать сортировку по количеству отзывов или по рейтингу товара. Выкладываю готовое решение.
Добавляем в вызов mFilter2 следующий код:
&loadModels=`easycomm`
&where=`{"class_key":"msProduct"}`
&leftJoin=`{
"ecThread": {
"class": "ecThread",
"on": "msProduct.id = ecThread.resource"
}
}`
&select=`{
"msProduct": "*",
"ecThread": "ecThread.rating_simple AS rating, ecThread.count AS reviews"
}`Сортируем например с помощью параметра sort, так же в вызове mFilter2 добавляем
&sort=`rating:desc`Или даем пользователю возможность выбирать, по какому параметру сортировать. Вставляем в шаблоне с сортировкой еще 2 строки
<li><a href="#" data-sort="rating" data-dir="rating:desc" data-default="desc" class="sort">по рейтингу <span></span></a></li>
<li><a href="#" data-sort="reviews" data-dir="reviews:desc" data-default="desc" class="sort">по отзывам <span></span></a></li>Ну и разумеется, вместо «по рейтингу, по отзывам», если необходимо, пишем термин словаря.
Так же теперь можно пользоваться плейсхолдерами в шаблоне товара
[[+rating]] // Рейтинг товара от 1 до 5
[[+reviews]] // Количество отзывов о товареВсем удачи!
Комментарии: 20
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
СергейСергейДелаю так но вообще ничего не выводит.
0.0000181: Loaded model «easycomm» from "/core/components/easycomm/model/"
0.0000179: pdoTools loaded.
0.0034862: Fetched ids for building filters: "" from element «mSearch2»
0.0044649: Total time
6 291 456: Memory usage
В чанк вывода outer:
Включил log, почему то получается 3 вывода лога.
Правда запрос странный, в нем нет leftJoin)
В документации по mFilter2 указано , вроде так и написал.
Вы же сделали join, данные уже выбрали…
На сколько разобрался, должно быть правильно вот так — И получается в «Журнале ошибок»
Возникла такая проблема. После проделанных манипуляций не передаются значения в плейсхолдеры [[+rating]]
[[+reviews]], вместо них нули в каталоге в карточках товаров.
Без присоединения, товары выводятся:
С присоединенным easycomm не выводит товары
Переименованы поля у объектов:
— ecThread: resource > resource_id