Drupal 7 добавление в избранное с использованием AJAX

09.09.2014

Марина Лебедева

Как и у всех систем управления, CMS Drupal имеет огромный объем модулей для расширения стандартного функционала. Но, чтобы получить требуемый результат, решение не заканчивается при установке одного модуля.

В данной статье расскажу вам как сконфигурировать AJAX функционал добавления элементов на сайт в избранное.

Для реализации подобного функционала есть модуль favorites , но он не подходит по ряду причин.
Мой функционал был реализован с помощью модуля «флаг» и прекрасно работает.
Настройки будут немного длительными, но оно того стоит.

В конце это будет выглядеть так:

Или:


А вкладка с количеством избранных материалов


При наведении отображается подробный текст и ссылка на страницу с избранным


Для реализации такого функционала Вам потребуются следующие модули:

1.Flag

2.Views

3.Views Flag refresh

4.Views php

5.Session API (позволяет незарегистрированным пользователям добавлять в избранное)

Количество избранных объектов изменяется при отметки звездочки. У материала меняется звездочка избранного на активную.

Итак, наши действия:

1. Создание флага «Избранное».
В меню Содержимое->Флаги->Добавить флаг


Выбираем значение «материалы», нажимаем далее

Перед Вами окно настройки. Поскольку изображение очень большое, предлагаю посмотреть его в новой вкладке по этой ссылке.

2. Выводим «Добавить в избранное» к материалам. По-умолчанию выводится ссылка в виде текста.
Заходим в представление views (или создаем новое). Посмотреть мои настройки Вы можете по этой ссылке.

В моих настройках отмечено самое важное и необходимое, что нужно для вывода.

При добавлении «отношений» между материалом и флагом, выводится форма:


Отмечать галочку не стоит, т.к. она убирает вывод материалов, которые не отмечены избранным у пользователя.

В настройке самого флага, в разделе «ссылка флага», параметры должны отмечаться так:


Остальные настройки вывода материала — по вашему вкусу и необходимости.

При сохранении представления ссылка на добавление в избранное выводится текстом. Надо изменить на изображение звездочки.


Данная ссылка уже является рабочей. При клике на нее меняется текст и материал добавляется в избранное.

3. Выводим «Добавить в избранное» изображениями. За метод спасибо.

Копируем flag.tpl.php из Sites/all/modules/flag/*theme name* в папку с нашей темой. У меня это Sites/all/themes/framework

Копируем данный текст и вставляем его в template.php в папке с Вашей темой:

В function framework_preprocess_flag(&$vars) вместо framework пишем имя своей темы.
Можно посмотреть выше в любой функции этого файла.

В каталог images вашей темы необходимо добавить изображения:

flag-[имя_флага]-off.png

flag-[имя_флага]-on.png

Очищаем все кеши на сайте. Можно по ссылке you-site-name.ru/admin/config/development/performance

Если все сделано правильно — на Вашем сайте появятся заданные изображения.

4. Выводим блок с количеством избранных материалов. Создаем views типа блок.

На изображении сделаны все настройки для блока. Ниже описаны этапы настройки.


Добавляем отношения Флаги: Материал flag counter и Флаги: Материал флаг



В обоих окнах обязательно нужно поставить галочку «включить только помеченные материалы» и выбрать автор «текущий пользователь».

Это необходимо для того, чтобы показывались только те материалы, которые отмечены флагом и показывали материалы, которые выбрал только текущий пользователь (иначе будет считать для всех пользователей)

Добавляем «поля»: Флаги: Счетчик флага.


Включаем агрегацию. Агрегация — это набор функций, предназначенных для суммирования, умножения, количества записей.

Это аналог SQL count(), sum() и т.д.

Выставляем данный параметр в | Настройки агрегации


В данный момент, уже считает наши избранные товары. А теперь надо сделать чтобы еще и изменялось значение в блоке с количеством избранных материалов. Для этого и нужен модуль Views Flag Refresh. Он добавляет в представление поле flag refresh.

Во views с выводом количества значений указываем:




Помещаем наш блок в то место на сайте, где он и должен быть, и радуемся результату!

Мой результат такой:

5. Страница с выбранными избранными материалами.

Все тоже самое как в пункте 2, но при добавлении «отношений» между материалом и флагом, в форме поставить галочку «Включить только помеченные материалы».

6. Склонения при выводе количества материалов в избранном.

Заходим во views, выводящем количество записей в избранном. Добавляем PHP-код в поля, в поле «Count(Флаги: счетчик флага)» ставим галочку «Исключить из вывода», а в PHP output code пишем:

Проверьте название переменной $row->count

После всех проделанных манипуляций, у Вас будут выводиться материалы со звездочкой для избранного, и блок с количеством избранного.

Спасибо за внимание!

  • Drupal

Комментарии

Добавить комментарий

Вы вернулись, чтобы дочитать статью? Кликните на меня, я найду то место, где вы остановились.