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