Не все знают, что у стандартных компонентов 1С-Битрикс есть много красивых шаблонов, которые практически никогда не используются. Например, один начинающий разработчик спросил, как сделать такое же прикольное голосование как вот здесь http://webclub-nsk.ru/seminars/agenda/themes/ (в виде 5-ти квадратиков и выбора через AJAX). Проблема не нова - я уже писал о том, что многие возможности 1С-Битрикс остаются за кадром разработчиков. Не претендуя на лавры мега-программиста, хочу рассказать совсем о другом: 1. Что у стандартных компонентов часто есть другие шаблоны, а не только .default 2. Что комплексные компоненты "Новости" и "Каталог" иногда похожи, а иногда сильно различаются. [spoiler] Итак, задача: 1. Выдать голосовалку не в детальном товаре, а на странице со списком товаров. 2. Выдать ее на AJAX стандартными средствами
Ррешение (для среднеподготовленного человека, методом копипасты): В каталоге нет голосования. Зато оно есть в комплексном компоненте "Новости", в детальном просмотре элемента. Идем в этот шаблон и видим такой код:
Собственно. он нам и нужен. Копируем его куда-нибудь.
Теперь решаем задачу выдачи его в списке элементов. Например, в ТОП элементов каталога. Вставляем данный код в шаблон компонента "bitrix:catalog.top" куда-нибудь, где он должен выводиться. Я вставил его в таблицу после вывода <?=$arElement["PREVIEW_TEXT"]?>. Теперь нужно сделать, чтобы голосование выводилось для нужного нам элемента. Меняем строку
"ELEMENT_ID" => $ElementID,
на
"ELEMENT_ID" =>$arElement["ID"],
и - ура - голосовалка работает!
Теперь внешний вид. Идем в папку с шаблонами компонента bitrix:iblock.vote и видим там два шаблона: по-умолчанию (страшненький выпадающий список) и ajax. Вторая проблема тоже решена. В итоге вызов компонента получился вот таким:
точно! Знает кто-нибудь как посчитать с помощью API усредненное количество показов элемента. Читал, что есть в CIBlockElement::GetList свойство shows и оно расчитывается как (количество показов / продолжительность показа) как его с помощью API посчитать и вывести на экран?
А как решить проблему, что после такой вставки в настройках компонента в визуальном редактировании появляются столько строк Голосования, сколько элементов?
Стесняюсь спросить - а есть ли необходимость бороться с кэшированием (копировать все в component_epilog.php) и какие проблемы должны начать наблюдаться с кэшированием?
- у меня включено автокэширование и управляемый кэш, и я не очень знаю, как протестировать это решение - дома один компьютер, но много браузеров - рейтинг выводится всегда и везде, голосование отлично работает - но вот только только не даёт мне дважды голосовать - и неважно, авторизован я или нет, и с какого браузера захожу. Так и надо или это и есть проблема с кэшированием?
Все хорошо. Но подскажите пожалуйста, как обнулить значения??? Если я уже сам "наголосовал" и теперь хочу что б у всех элементов было значение по нулям, или изменить у одного элемента?
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».