Какой рейтинг товаров использовать?
Добрый день, посоветуйте, какой рейтинг товаров используете на сайте магазинов?
Из хотелок:
1) Работа с товарами в собственных таблицах. Те. нужно, чтобы все можно было оценивать.
2) Работа через Ajax, как вывод, так и голосование
3) Оптимальный расчет ретинга. Чтобы не тупил при большом количестве товаров.
Что пробовал:
— CSS Star rating — всем хорош, но нет Ajax.
— LexRating — есть аjax, хранит таблицу с IP — не уверен, что это правильное решение.
И насколько понял для расчета рейтинга тянет все оценки и внутри считает среднее(!), вместо того, чтобы хранить среднее и перезаписывать его при оценке. Т.е. если такой снипет, поместить в вызов getResources должно тормозить невероятно (теория, хотел бы знать как на практике)
Другого нет вроде бы ничего.
Из хотелок:
1) Работа с товарами в собственных таблицах. Те. нужно, чтобы все можно было оценивать.
2) Работа через Ajax, как вывод, так и голосование
3) Оптимальный расчет ретинга. Чтобы не тупил при большом количестве товаров.
Что пробовал:
— CSS Star rating — всем хорош, но нет Ajax.
— LexRating — есть аjax, хранит таблицу с IP — не уверен, что это правильное решение.
И насколько понял для расчета рейтинга тянет все оценки и внутри считает среднее(!), вместо того, чтобы хранить среднее и перезаписывать его при оценке. Т.е. если такой снипет, поместить в вызов getResources должно тормозить невероятно (теория, хотел бы знать как на практике)
Другого нет вроде бы ничего.
Комментарии: 17
easyComm от этого модуля не подойдет?
По описанию он довольно мощен для моей задачи, да еще и pdoTools требует, а мне все это пока не надо.
Или я что-то не так понял и можно только частями устанавливать?
Или я что-то не так понял и можно только частями устанавливать?
Если есть беспокойство о быстродействии, getResources необходимо выкинуть на помойку и заменить на pdoResources. То есть, одну из причин против easyComm уже устранили. То, что он «довольно мощен», тоже не причина. Сейчас требуется одно, а чуть позже требования расширяются. Так показывает практика.
И еще:
Это единственный способ расчета правильного среднего. Иначе как считать среднее при новой оценке? Как среднее между старой усредненной из тысячи и единственной новой? Представьте с точки зрения математики такой подход и увидите, что он всегда будет давать неправильные результаты.
И еще:
— LexRating <...>
И насколько понял для расчета рейтинга тянет все оценки и внутри считает среднее(!), вместо того, чтобы хранить среднее и перезаписывать его при оценке.
Это единственный способ расчета правильного среднего. Иначе как считать среднее при новой оценке? Как среднее между старой усредненной из тысячи и единственной новой? Представьте с точки зрения математики такой подход и увидите, что он всегда будет давать неправильные результаты.
Вместо getResources я использую быстрый getProducts, в pdoResources нет нужного мне функционала.
Что касается среднего рейтинга, вы не поняли моей логики. Я предлагаю считать рейтинг в момент постановки оценки, а не в момент, когда нужно показать оценку товара.
Ставит человек оценку, идет сложный процесс — вытягиваются все предыдущие оценки, рассчитывается среднее, записывается в базу. Но это разовые операции, оценки реже ставятся чем тянется значения рейтинга.
Что касается среднего рейтинга, вы не поняли моей логики. Я предлагаю считать рейтинг в момент постановки оценки, а не в момент, когда нужно показать оценку товара.
Ставит человек оценку, идет сложный процесс — вытягиваются все предыдущие оценки, рассчитывается среднее, записывается в базу. Но это разовые операции, оценки реже ставятся чем тянется значения рейтинга.
Кстати, вот вопрос, easyComm можно использовать в качестве комментариев к товарам.
Но как быть с магазином, где товары постоянно обновляются? Например, удалился у меня товар, как отследить, чтобы и соответствующая ветка комментариев удалялась? Есть какая-то автоматическая чистка?
Но как быть с магазином, где товары постоянно обновляются? Например, удалился у меня товар, как отследить, чтобы и соответствующая ветка комментариев удалялась? Есть какая-то автоматическая чистка?
Есть, удалится все.
Удалится если товары ресурсы modx или для своих таблиц тоже работать будет?
Цепочка с сообщениями привязана к ресурсу, как только удалите ресурс — удалится и цепочка.
Если у вас свои таблицы для товаров используются, то вам все равно придется сообщения привязать к некому ресурсу, например он может называется «Отзывы». У этого ресурса будет много цепочек, тогда чистить их нужно будет самостоятельно, небольшой плагинчик написать, в принципе ничего сложного.
Если у вас свои таблицы для товаров используются, то вам все равно придется сообщения привязать к некому ресурсу, например он может называется «Отзывы». У этого ресурса будет много цепочек, тогда чистить их нужно будет самостоятельно, небольшой плагинчик написать, в принципе ничего сложного.
modstore.pro/packages/utilities/voteforms
Вопрос с вызовом сниппета внутри getResources решается путем leftJoin'a нужных таблиц.
Вопрос с вызовом сниппета внутри getResources решается путем leftJoin'a нужных таблиц.
А он живой еще? Давно не обновлялся и демо умерло.
Да, давненько.)
Ну, каких-то недоделанных фич ждать не приходится (то же голосование анонимами). Но для системы рейтингов у ресурсов лично мне его хватает.)
Ну, каких-то недоделанных фич ждать не приходится (то же голосование анонимами). Но для системы рейтингов у ресурсов лично мне его хватает.)
путем leftJoin'a нужных таблиц.А можете немного подробнее об этом? Нужно править код getResources или как-то еще?
Упс, извиняюсь — все намного проще: на ночь глядя не обратил внимание, что речь о getResources.
у меня getProducts, но все же, как?))
Если вы о том, как приджоинить voteforms к вызову (pdoTools), то так:
Если вас интересует, как именно реализовать это в связке с getProducts/другим сниппетом, не поддерживающим возможность присоединения таблиц, то потребуется отредактировать сниппет voteforms и при изменении рейтинга дублировать необходимое вам значение в тв-поле ресурса.
В противном случае — сниппет внутри сниппета, но это так себе вариант: лучше перейти на pdoTools.
[[!pdoResources?
&loadModels=`voteforms`
&leftJoin=`{
"VoteFormThread": {
"class": "VoteFormThread",
"on": "modResource.id = VoteFormThread.resource AND VoteFormThread.form = 1"
}
}`
&select=`{
"modResource": "*",
"VoteFormThread": "rating AS rating"
}`
...
//айди формы и желаемые поля для выборки указать под себя
Если вас интересует, как именно реализовать это в связке с getProducts/другим сниппетом, не поддерживающим возможность присоединения таблиц, то потребуется отредактировать сниппет voteforms и при изменении рейтинга дублировать необходимое вам значение в тв-поле ресурса.
В противном случае — сниппет внутри сниппета, но это так себе вариант: лучше перейти на pdoTools.
спасибо!
CSS Star rating когда-то получилось доделать на ajax )
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.