Создаем сайт с платным доступом к контенту на базе Drupal.

В продолжение серии статей о типовых решения на базе CMS Drupal, я предлагаю вашему вниманию решение такой задачи как продажа доступа к определённому контенту на Вашем сайте.

Рекомендую Вам так же ознакомиться со следующими типовыми решениями: Доска объявлений средствами Drupal, Сайт «визика» средствами Drupal, Многоязычность в Drupal.

Реализовывать данное решение мы будем на старом добром Drupal 6.x.

Для создания сайта нам понадобятся следующие модули:

  1. Ubercart
  2. Localization update
  3. Uc Roboxchange
  4. Token
  5. Content Access

Шаг первый — создание отдельного типа материала и специальной роли.

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

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

Давайте создадим новую роль, делается это на странице /admin/user/roles. Я её назову pay_role, вы можете назвать так же или любым другим именем.

Теперь создаем новый тип материала на странице /admin/content/types/add, я его у себя назову pay_content. Теперь нам надо установить ограничения на просмотр этого типа материала, я осмелюсь предположить, что модули указанные выше уже установлены и включены. Настройки доступа делаются на странице — /admin/content/node-type/pay-content/access.

Выглядеть это будет примерно так:


Сохраняем изменения и двигается дальше.

Шаг два – создание товара для продажи роли.

Теперь нам нужно сделать самое главное, это определить особенности для товара, так как в нашем случаи товаром является, по сути виртуальная роль на не нужно заворачиваться с расчетом доставки и прочими деталями которые необходимы для продажи физического товара.

Давайте перейдем на страницу настройки /admin/store/settings/products/edit/features. Ниже я выкладываю скрин настроек, а под ним напишу небольшое пояснение.

На данной странице вы можете выбрать какую роль назначать при продажи товара, в зависимости от товара можно назначить определённую роль, у которое к примере может быть определенный срок действия, либо роль будет действительно до определённой даты, тут уже на ваше усмотрение.

Я у себя выставил следующие, роль присваивается пользователю на 1 месяц, в зависимости от количества указанного в товаре, то есть его количества срок роли будет умножать, ну например ваш товар – Подписка на закрытый раздел сайта, если покупатель выбрал количество этого товара 1 то доступ будет выдан на 1 месяц если он выбрал 3 то доступ выдается на 3 месяца, и стоимость подписки соответственно меняется. Напоминание о продление доступа я установил за неделю до его окончания, у вас могут быть свои настойки, все достаточно гибко.

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

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

Как видно на рисунке выше при редактировании товара нам доступна вкладка «Особенности» нажимаем на нее и делаем небольшие настройки. Добавляем нашу особенность.

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

Вы так же можете переопределить срок действия роли, если поставите галочку в поле «Override the default ending expiration».

После сохранения настроек особенности вы увидите вот такое вот.

Сохраняем наш товар и переходи к следующему шагу.

Шаг три – легкий тюнинг модуля магазина и подключение средств оплаты.

В первую очередь давайте отключим ненужные вещицы с этапа оформления заказа, для этого уберем лишние галочки на этой странице — /admin/store/settings/checkout/edit/panes и тут /admin/store/settings/checkout/edit/fields. На странице /admin/store/settings/checkout/edit поставим галочку — Регистрировать пользователей, если учетные записи новых клиентов создаются во время расчета стоимости.

После регистрируемся на сайте http://www.robokassa.ru/ru/ и указываем свои данные на странице /admin/store/settings/payment/edit/methods. Это позволит Вам принимать платежи электронными деньгами и после оплаты автоматически присваивать пользователю роль.

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

Дополнительно

Теперь вам осталось только создать страницы с использование созданного типа материала – pay_content. Делается это стандартно тут /node/add. Вот и все теперь ко всем материалам имеющим тип pay_content можно будет получить доступ только имея роль pay_role которая в свою очередь присваивается при покупке товара.

[like_to_read]

Дистрибутив и модули, используемые в решении можно загрузить здесь — http://narod.ru/disk/43666734001.aa50ae8bb6de571218d8d091364c8c58/distr_end_modules.zip.html

Дистрибутив и дамп базы с настройками показанными в данном решении — http://narod.ru/disk/43667269001.ec2d9d7b9fefb029cc73a7410fd30d8d/distr_end_dump_db.zip.html

[/like_to_read]

Я буду рад любой ссылочке на блог в качестве благодарности.

Создаем сайт с платным доступом к контенту на базе Drupal.: 36 комментариев

  1. А я в данный момент занимаюсь разработкой подобного решения под wordpress. Принимаю предзаказы =)

      1. Вы можете загрузить сборку Drupal с этим решением в конце данной статьи, для появления ссылки нужно на жать лайк.

          1. Под WP готовых решений не встречал скорее всего надо разрабатывать отдельный плагин для этого.

  2. Здравствуйте!
    Как можно реализовать каталог на друпале напр типа вот этого http://www.tomsk.ru/directory/

  3. А можна более подробно про Ubercаrt какие подразделы модуля надо включить ? Захожу admin/store/settings/products/edit/features пишет not found или что то в етом роде . Помогите plz !

  4. Я делаю доску обьявлений и планирую таким способом продавать VIP роль , особенностью которой будет создание особенного типа материала VIP обьявление . И хоть убей не могу разобраться с Ubercart . Кстати доску делал тоже по одной из ваших статей .

    1. Там все достаточно просто, создайте товар, при продаже которого купившему будет назначаться роль на определённый срок.

  5. Здравствуйте , а возможно организовать платежную систему без Ubercart
    Просто чтобы у зарегистрированного пользователя был свой кошелек, и при необходимости он его пополнял и отправлял деньги администрации сайта .
    (Реализация платного баннера на сайте — тоесть юзер добавил свой баннер, а админ когда увидит поступление денег на счет — активирует его баннер). Или все таки уберкарт не будет мне мешать для реализации этой задачи (с модулем не знаком но мне кажется что он только усложнит задачу).

    P.S. не по теме — измените тип материала на уроке по созданию объявлений. Там стоит тип (Ad) советую изменить на любой другой , поскольку модуль ‘http://drupal.org/project/ad создает такой же тип материала и начинается конфликт типов содержимого.

  6. Уважаемые господа, несколько вопросов:
    1. Вы написали: «Реализовывать данное решение мы будем на старом добром Drupal 6.x.» А если взять Drupal 7.x — чем хуже, с точки зрения практики?

    2. Можно ли то же самое реализовать на Drupal 7.x+Сommers+Token+
    Content Access+roboxchange(для коммерса)? Например, за основу берем готовую сборку Commerce kickstart-7.x.

    Суть вот в чем. Нужно продавать а) доступ к страницам и б) платное скачивание
    файлов.

    На какой платформе лучше все это организовать?
    Идеал. По имеющемуся образцу готовой сборки вписываются названия файлов, их цены для скачивания и загружаются файлы в некую конкретную папку(защищенную от просмотра через вэбинтерфейс — кстати, как это сделать?). Аналогично и со страницами: в некую табличку добавляется название страницы, их цена и наполняется страничка материалом. (Например, в Commerce_kickstart добавили бы еще пару страниц с платным доступом и пару файлов с платным скачиванием + пару строчек, как добавлять новые платные страницы и файлы.
    И проблема, простейшая для профи, перестала бы быть проблемой для новичков, которым лезть в друпаловские «дебри» незачем и достаточно «опасно» да и глупо.)

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

    1. 1) Ну если взять Drupal 7 возможно возникнет проблема с отсутствием какого либо модуля, на Drupal 6 100% есть все необходимое.

      2) На Drupal 7 такое еще не приходилось реализовывать, по этому затрудняюсь ответить возможно ли это или нет, думаю возможно при правильном подходе к делу.

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

      Электронные файлы так же можно продавать через Ubercart.

      1. Спасибо за быстрый ответ.
        Скачал предложенную Вами готовую сборку.
        Отсутствует «дамп базы с настройками показанными в данном решении». (Ссылка на «Дистрибутив и дамп базы с настройками показанными в данном решении» полностью совпадает с предыдущей вашей ссылкой на «Дистрибутив и модули, используемые в решении можно загрузить здесь».)
        Нет ли у Вас подобной инструкции для платного скачивания файлов? Если можно, объясните, пожалуйста, хотя бы кратко как это реализовывается. (Вероятно, это делается еще проще, чем со страницами. Но важно слово специалиста.)

        1. Исправил ссылку в статье на дистрибутив с дампом базы. Продажу файлов реализовать можно стандартными инструментами Ubercart — File Downloads включается в секции Ubercart.

  7. ( Давайте создадим новый товар, не будем сильно вдаваться в описание товара, просто создаем, указываем цену артикул и самое главное особенность.) все это хорошо, но можно чуть по подробнее о создание нового товара.

  8. Здравствуйте!
    Скажите, можно ли организовать таким образом платное добавление нод определенного типа, ограниченное по количеству?
    Например 1 нода в сутки, после окончания роли — покупка роли и 1 нода в сутки?
    А лучше завершать роль после добавления ноды?

    1. Думаю можно, но придется скорее всего писать свой модуль для этого, во всяком случаи в самом Ubercart я на такое не натыкался.

  9. Подскажите пожалуйста?я хотел это реализовать на drupal 7, но почему то всё скрыто для других ролей , а как показать для других ролей скрытый контент ?

  10. Почему то в примере не срабатывает присваивание покупателю роли pay_role
    А без этого всё становится бессмысленным…

    PS: единственное отличие это то, что я использовал заглушку Test Gateway, для тестовой обработки якобы оплаты кредиткой.
    Но теоретически и так должно бы работать.., товар то куплен, но роль не присваевается

    В чём может быть дело

  11. Подскажите может есть модуль чтобы организовать допустим закрытые страницы на сайте вход в которые можно осуществить только введя нужный пароль (пароль задает в настройках администратор).

  12. Всё впринципе хорошо объяснили… но Вы сделали несколько ошибок в написании ссылок , и хорошо было бы написать пароль на Дистрибутив

  13. А получится ли таким образом реализовать платную подписку не ко всем платным разделам, а только к тем, что приобрели?

  14. Вопрос: а на готовую сборку можно накладывать темы Друпала? или есть какие то ограничения? Заранее спасибо

  15. Здравствуйте! А можно подробнее, как сделать чтобы доступ открывался только к тому материалу (страницам), который оплатили? Допустим, есть несколько страниц онлайн-тренингов, и есть страница, где представлен сборник материалов со всех тренингов по чуть-чуть.

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

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *