Генерирует "голосование звездочками" для справочника. Обеспечивает сохранение и обсчет голосов в базе, вывод и использование результатов голосования производится через другие макросы.
Использование простое - при выводе элемента справочника, например какой-то новости, можно вывести этим макросом "голосование звездочками". Если человек выбирает рейтинг от 1 до 5 (макрос реализует голосование с шагом 0.5 балла) - ему предлагается сохранить результат, после чего информация о голосах записывается в справочник в эту же запись. К записи будут автоматически добавлены три поля, которые могут быть в дальнейшем либо выведены на страницу, либо участвовать в сортировке справочника, либо корректироваться в админзоне:
- twl_stars_votecount - количество проголосовавших;
- twl_stars_votesum - сумма голосов;
- twl_stars_rating - текущий рейтинг с округлением до 0.5 балла и вычисленный как среднее арифметическое;
Для работы макроса используются библиотеки JQuery, требуется включенный Javascript в браузере.
Повторные голосования в течение одних суток блокируются, отметка о голосовании реализована примитивно, на уровне Cookies, чего вполне хватить для большинства случаев применения.
Картинку "звездочки" можно перерисовать, получив возможность голосования "бабочками", "кошками" или чем-то еще. См. ключ path для указания на папку с измененными изображениями.
Примечание: при работе с элементами каталога нужно не забывать о том, что элементы-ярлыки в базе физически отсутствуют, это виртуальные товары имеющие свой уникальный идентификатор. Поэтому для ярлыков в макрос Stars нужно передавать не $Attribute:id$ (он содержит id ярлыка), а $Attribute:soul$ (содержит id исходного товара). Примерно так:
$Stars[source: catalogitems; id: $Text[source: $Attribute:id$; condition: $Attribute:soul$=]$$Attribute:soul$; nof_votes_title: "Заголовок"]$
Естественно, при таком подходе рейтинг будет считаться только для товара, а не для товара и образованных от него ярлыков по отдельности.
Пример, вставляемый в news_design.xml, секция вывода конкретной записи. Подпись к количеству голосов выводится в зависимости от наличия таковых.
$Stars[source: news; id: $Attribute:id$; path: /Sites/twl_ru/Images/Lib; nof_votes_title: "$Text[source: "Нет голосов"; condition: $Attribute:twl_stars_votecount$=]$$Text[source: "Голосов: "; condition: $Attribute:twl_stars_votecount$!=]$"]$
Совсем простой пример, который будет не очень корректно выглядеть когда голосов еще нет, но обычно это не страшно.
$Stars[source: news; id: $Attribute:id$; nof_votes_title: "Голосов: "]$