Уже давненько продукт нуждается в публичном Избранном, простом и удобном. Надеюсь, я решил эту проблему [CUT] Представляю вам свою новую платную разработку - модуль Избранного.
Модуль предназначен для организации на сайте избранных материалов зарегистрированными пользователями. Архитектура модуля позволяет вводить абсолютно любые типы избранного - все то, что основано на модуле Инфоблоков - это новости, статьи и прочие материалы. Так же стандартно поддерживается избранное постов блогов. По запросу (после рассмотрения) можно дополнить модуль новыми типами. Другими, простыми, словами, на сайте могут быть избранное новостей, избранное блогов, избранное статей, и так далее. Вы можете назвать это другими словами и организовать, например, список отложенных товаров, или плейлист проигрывателя.
Модуль содержит три публичные компоненты (все можно кастомизировать по собственному желанию, все компоненты требуют подключенного на сайте jQuery):
1. Кнопка двух видов (нравится / в избранное).
Также есть шаблон кнопки simple, выводящий простые ссылки В избранное / Из избранного.
2. Папки избранного текущего пользователя. Пользователь может добавлять новые папки и редактировать текущие. Набор папок каждого пользователя для каждого типа избранного разный. То есть, для блогов, например, один набор папок, для статей - другой, для новостей - третий, и так далее.
3. Список элементов, добавленных в избранное. Компонент выводит добавленные в Избранное элементы текущего пользователя.
После установки модуля требуется создать набор типов избранного в админ.части. Типы - это, в первую очередь, логическое разделение (новости/статьи/...), но так же являются обязательной частью архитектуры. То есть, для модулей Инфоблоков и Блогов типы обязательно должны быть разные, иначе будет конфликт ID элементов. А в то время как в рамках модуля Инфоблоки тип Избранного может быть вообще один.
После настроек типов, вам надо будет установить кнопки в материалах. Обращаю внимание, что интеграция кнопок не входит в стоимость модуля и оплачивается отдельно или производится сторонним специалистом.
Для этого где-нибудь на отдельной странице сначала настройте компонент кнопок. Некоторые пояснения:
- В "ID элемента" передается динамическая переменная текущего материала, где размещена кнопка.
- "Обновить счетчик уже после загрузки страницы" - если кнопка кешируется (например, размещена в компоненте новостей), то надо ставить данную галочку. Запрос количества текущих добавлений в избранное произойдет уже посредством JavaScript отдельным хитом. В других случаях галочку можно не ставить. - Последние два параметра рассмотрим чуть ниже, при внедрении в список (на детальной странице они могут быть пустые). Отдельно заметка про параметр "Количество голосов": если вам по каким-то причинам не надо выводить количество добавлений в избранное элемента (например, просто ссылка "добавить в избранное"), то в данный параметр воткните любое число (например, 1). Это избавит от дополнительного запроса.
После того как компонент настроен на отдельной странице, надо взять код его вызова и интегрировать в шаблон новостей/статей/блогов. Пример настройки двух других компонент показан на скриншоте.
Вообще, функционал избранного может работать только с кнопками. Фактически, это будет собственный Like вашего сайта. Но можно и на какой-то странице выводить пользовательское избранное - его папки и содержимое папок, или, например, только содержимое.
Все что выше, относилось к установке кнопок на детальной странице элемента. Коротенечко рассмотрим как добавить кнопки в список. Все то же самое, кроме того, что нам надо как-то каждой кнопке передать, сколько у нее голосов, и нажимал ли на нее текущий пользователь. Для этого есть два варианта:
1. Поставить галочку "Обновить счетчик уже после загрузки страницы", и тогда все кнопки наполнятся дополнительным хитом. Кстати, если кнопки у вас внутри области кеширования внешнего компонента, то эта галочка обязательна, и ваша задача решена.
2. Есть возможность сэкономить доп.хит после загрузки страницы, если кнопки вне области кеширования находится. И если вы обладаете навыками программирования. Тогда перед вызовом цикла с элементами, вставляем такой код (вызываем одним запросом счетчики и состояния кнопок, передавая методу массив ID-ков элементов в списке):
Это тоже контекстный пример, у вас он может выглядеть по другому. Но неизменными будут последние две строчки. Данный код дан для стандартного каталога, вот результат: http://test.d-it.ru/e-store/books/12/
я так понял в модуль не работает без авторизации. Было бы отлично, если бы человек не зарегистрирован, то в сессию положить. Или модуль позволяет работу без авторизации?
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».