В этой статье мы разберемся как организовать платный доступ к определенным разделам сайта на базе Drupal + Commerce
Не давно мене нужно было сделать сайт с платным контентом, доступ к к которому пользователь мог бы получить только после оплаты. Опыта у меня по созданию такого функционала на тот момент не было хотя в теории я понимал, что мне нужно создать в Drupal определенный тип материала к которому нужно запретить доступ для всех ролей (встроенная функция Drupal), а затем создать свою роль которая и будет иметь доступ к данному типу материалов, причем эта новая роль должна быть товаром в интернет магазине. Покопавшись в интернете подробных статей на русском языке я не нашел, но позже я наткнулся на видео от разработчика Drupal Commerce, в котором он рассказывает, как можно продавать доступ к контенту(ролик опубликован в конце статьи), правда видео на английском языке по тому для не знающих языка и для себя в качестве шпаргалки выкладываю подробную инструкцию со скриншотами.
Прежде чем приступить у вас должен быть установлен Drupal и настроенный Commerce, а также нам понадобится следующие модули:
- Content Access
- Rules.
если они у вас не установлены скачайте и установите
- Создаём тип материала «Premium content» : Структура » Типы содержимого » Добавить тип содержимого (admin/structure/types/add)
- создаётся роль «premium» : Пользователи » Разрешения » Роли (admin/people/permissions/roles)
- Вернемся к типу материала «Premium content» и даём роли premium разрешение на просмотр материалов Premium content, после установки модуля Content Access у вас на странице редактирования типа материала (admin/structure/types/manage/premium_content) появиться новая вкладка Контроль доступа отметь на ней галочками пункты как на скриншоте ниже:
- Создаём товар «Premium role»
На этом подготовительные работы закончены переходим к настройке правила Rules
Переходим на страницу Rules: Конфигурация » Процесс » Правила (admin/config/workflow/rules) и нажимаем кнопку Добавить новое правило на открывшейся странице вводим название для правила в поле Реакция на событие выбирете Commerce Order » После обновления существующей commerce order и сохраняем правило
если у вас такой же результат сохраните изменения и попробуйте заказать товар
Теперь после покупки товара «Premium role», юзеру будет назначена роль premium и он получит доступ к Premium content.
Если нужно ограничить роль по времени скачайте модуль role expire, ставьте бета версию модуля и накатите на него патч
Обещанный в начале статьи видео-ролик от разработчика Drupal Commerce
Во втором видео рассказывается как продавать доступ к определённым нодам, а не к типу материала.