Добрый день, уважаемые друпалеры!
Предлагаю вам два модифицированных модуля по покупке доступа к статьям:
1) модифицированный после покупки статьи деньги начисляются автору + возможность в настройках модуля указать комиссию магазина в %
2) Модифицированный модуль , который в настоящее время под 6 drupal абсолютно не работает.
В модифицированной версии изменена часть логики данного модуля по закрытию контента от не оплативших пользователей и + кое-какие доработки
оба модуля в alpha версии и нуждаются в тестировании и доработке, так что жду ваших комментариев.
В дальнейшем планирую написать универсальный модуль по покупки контента:
Модуль представляет собой единую систему покупки материалов, интегрированную и с userpoint и pgapi
Настройки:
1) Выбор типа материала
2) Включение/выключение способов доступа
3) Настройка цены (отдельно для userpoint и pgapi): a) администратор указывает фиксированную цену за статьи
б) пользователь сам может указать цену за свои стати (отдельное право доступа).
4) настойка комиссии сайта(отдельно для userpoint и pgapi).
5) выставляется курс денег pgapi к userpoint
Реализация:
При создании материала в форму добавляется выпадающий список (свободный, по userpoin-там, за деньги), при необходимости AHAH подгружается второе поле, в котором можно указать цену.
Пользователь может получить доступ к материалам в зависимости от выбранного автором способа оплаты.
При необходимости пользователь может купить userpoints через pgapi по курсу, установленному на сайте.
Автор статьи получает userpoins и деньги pgapi с учетом вычета комиссии сайта.
При смене автором способа оплаты или цены у уже оплативших доступ к статье сохраняется.
Актуальность модуля
Система покупки статьи через userpoint позволит подстегивать интерес пользователей к написанию качественных статей, так как таким образом они смогут получать доступ к другим качественным статьям сайта.
В то же время авторитетные авторы, желающие заработать, смогут продавать статьи за деньги, при этом будет осуществляться монетизация сайта.
Для начинающих авторов есть возможность выкладывать статьи в свободный доступ.
Кто заинтересован в создании такого модуля прошу помочь делом, советом, или денежкой (R346506327073)
Скорость разработки будет зависеть от вашей помощи.
Вложение | Размер |
---|---|
pg_userpay.rar | 11.71 КБ |
userpoints_nodeaccess.rar | 15.11 КБ |
Комментарии
Спасибо gumk, то что надо!
Возникает проблема - создателю (продавцу) ноды показывается ссылка на покупку, т.е. он может сам же купить доступ к своей ноде, что вызывает ошибку. Так же создатель ноды должен иметь возможность смотреть полное описание своей же ноды.
Для себя я это поправил неким своим костылем, но правильнее будет, если это будет сделано самим разработчиком.
Так же поправил проверку прав для Buy access, которые назначаются в Разрешениях ролей.
Для моего проекта необходимо, что бы нода продавалась только один раз, т.е. только одному покупателю. К сожалению, пока нет времени разобрать модуль - сделал просто скрытие ссылки Buy access, при уже купленной ноде. Но есть вероятность, что при одновременной покупке - купить ноду смогут оба. Надо делать проверку на купленность ноды перед покупкой.
Было бы замечательно, если бы в админке можно было задать сколько экземпляров ноды может быть продано, либо если 0 - то без ограничений. А во Views отсортировать не купленные ноды.
Если удастся это реализовать - готов немного проспонсировать.
что за костыли использовали?
iNFerNo, я уже не помню точно - сидел ночью.
Сразу хочу сказать, что несмотря на большой опыт php разработки с друпалом общаюсь на Вы и только пару месяцев.
Постараюсь вспомнить, что я делал (смотрю на правленый модуль pg_userpay):
Исправил pg_userpay_link
Оригинал:
<?php
function pg_userpay_link($type, $object, $teaser = FALSE) {
$links = array();
if (!user_access('free access')&& variable_get('pg_userpay_allowed_'. $object->type, 0) && $object->pg_userpay_price > 0 && !pg_userpay_is_paid($object->nid)) {
$links['sample_link'] = array(
'title' => t('Buy access'),
'href' => 'simplepay/'.$object->nid,
'attributes' => array('title' => t('Buy access')),
);
}
return
$links;}
?>
Моя:
<?php
function pg_userpay_link($type, $object, $teaser = FALSE) {
global $user;
$links = array();
if (!user_access('free access') && user_access('buy access') && $user->uid != $object->uid && $object->pg_userpay_price > 0 && !pg_userpay_is_paid($object->nid) && !pg_userpay_is_sold($object->nid)) {
$links['sample_link'] = array(
'title' => t('Buy access'),
'href' => 'simplepay/'.$object->nid,
'attributes' => array('title' => t('Buy access')),
);
}
return
$links;}
?>
Так и не смог понять, что делает в проверке variable_get('pg_userpay_allowed_'. $object->type, 0).
Предположил, что проверку прав.
Заменил на user_access('buy access') - теперь работает как надо.
$user->uid != $object->uid - так мы скрываем Buy access от автора/создателя ноды.
На основе pg_userpay_is_paid добавил в модуль функцию pg_userpay_is_sold - проверки "проданности" ноды:
<?php
function pg_userpay_is_sold($nid){
$ret = FALSE;
$pr = db_fetch_object(db_query("SELECT * FROM {pg_userpay_payment} WHERE nid = '%d'", $nid));
if(!empty($pr)){
$ret = TRUE;
};
return $ret;
}
?>
баг с отображением ссылки на покупку поправлю за праздники. с количеством раз покупки реализовать смогу по-позже.
не ставится галка в типах материалах
userpoints nodeaccess allowed
подскажите userpoints_nodeaccess
будет работать совместно с модулем доступа node_access
т.е. если нода не доступна для конкретной роли
покупать доступ нельзя будет?
а если для роли нет доступа а конкретному юзеру есть... (ACL модуль) Будет предлагаться покупка ноды?
а возможна реализация... мода который не списывает поинты в проверяет на наличие... поинтов на балансе и тогда допускает юзера к ноде (при условии что роль имеет доступ которую юзер имеет)
ксти нуждаюсь в таком модуле может мог и денюшку какую нить подбросить.
Вот и я о том же.
правда свои плюхи нужны в функционале...
Ну вот и замолкла тема.
А где указывать кошелек магазина, куда проценты уходить будут?
При приеме оплаты средства уже лежат в кошельке магазина.
Комиссия магазина не работает, деньги целиком попадают в кошелек магазина, создателю ноды ничего не приходит.
Так и должно быть.
Сумма целиком падает в кошелек магазина, а вот при операциях в магазине с лиц счета продавцов в магазине взимается комиссия. Соответственно при выводе конечная сумма для вывода будет меньше. Все зависит от движения средств между продавцами. Отдельный кошелек для комиссии не нужен. Просто в процессе работы магазина, на его кошельке будет оставаться все больше средств.
кто сделает так что бы автор не платил за свой же материал.
пи.эс. нужно убрать оплату наликом. нужна оплата только с баланса. и тогда и проценты будут идти.
кинул на баланс в кашелек. пошел купил доступ к ноде.
а еще бы был бы кошелек магазина для админа, что бы видеть все операции кто сколько и когда...
Поставил галку "Simple pay purchase allowed", создал пробную ноду. Но полный вид ноды видно еще до оплаты... Перерыл все настройки... Как скрывать полный вид?
А не под админом смотреть пробовали?
есть подмодуль pgapi показывает все операции
там косяки... удаляешь... операции, но все равно все видно.
я о другом. что бы общий был кошелек со всеми по сайту операциями...
Да, конечно пробовал. Т.е, кроме этой галки "Simple pay purchase allowed" ничего больше не надо настраивать для скрытия?
А модули simplepay и userpay отличаются только наличием комиссии магазина?
нада только комисией...
так что за сколько можно доработать модуль что бы автор не платил и что бы нода полная не вылезала... для тех кто не купил еще...
to iNFerNo
FreeDS объяснил мне по поводу того, чтобы нода полная не вылезала до оплаты.
Я не там искал, это не CCK-поля скрываются! Это скрывается полное описание ноды в поле "Содержимое" при отделении анонса от полной версии, и до оплаты видно только анонс ноды.
я знаю что анонс.
а зачем он нужен... да еще с комментариями. кто мешает скопировать в комментарии публикацию...
как бы нужно что бы вылезала страница как минимум без комментариев а как макимум просто страница с кнопкой материал нужно купить....
а то человек подумает что тизер = материал полный... и ничего покупать не нужно.
или например... материал изночально равен тизеру а чел возмет и купит а там нифига нет нового?
Комментарии можно отключить в настройках материала...
зачем их отключать то???
если они должны быть!!!
1. куплена нода
2. когда к ноде не применяется оплата...
Ход ваших мыслей мне не ясен.
Так нужны комментарии или нет?
Если нужны - включаем, если нет - выключаем.
Если нужна какая то определенная логика в отображении комментариев, тогда лучше объясняйте, чего вы хотите получить на выходе.
Я уже написал давно (см выше) мысль.
1. Зачем показывать комменты если нода не куплена?
-- как минимум показывать тизер (но правильнее ничего не показывать (что бы не было путаницы т.к. я при попадани в ноду если вижу что я туда зашел, а если еще и комменты видны - ЯСНО ДЕЛО что в голову даже не придет мысль что еще что-то купить нужно что бы якобы увидеть еще больше) - а лишь сообщение типа - для просмотра ноды ее нужно купить. И кнопка с надписью желаете купить? и отмена ссылка - возвращает юзера на страницу с которой он попал сюда.
2. Зачем продавать ноду автору ноды?
1. Все зависит от конкретных требований проекта.
Например, в моем случае, наоборот, необходимо давать пользователям обсуджать ноду до того, как она будет купленна. А после того, как она была приобретена - она становится видна только одному, купившему её пользователю. Соответсвенно, и комментировать её больше нельзя.
2. Это бага, а может и фича. Для своего проекта я это поправил - см. выше.
Так если в комент можнослить всю ноду... (допустим тексты там) - не безопасно как бы... и зачем обсуждать ноду - тизер - 1 предложение ЧТО там обсуждать то?
а что это значит проверка проданности?
пи.эс. у вас там выше не выводиться фраза купить ноду для автора или же... пускает в ноду если юзер автор?
про проданность понял... видимо это для покупки ноды только 1 человеку... т.е. др уже ее не купят.
Так как сделать так что бы автору ноду без покупки показывалась вся нода, а не тизер только.
и что можно сделать с показом комментариев? что бы если показывается тизер коменты не выводить...
и подпись бы в тизере (когда в ноде он показывается) сообщение - для просмотра полной версии нужн окупить ноду (как это в модулях типа ноде приватес или прениум контент) .
Надо лезть в код модуля и править
праваразрешения.в какой функции?
Вот тут я не отвечу.
Это уже вопрос к спецам.
Gumk тебе в помощь!
variable_get('pg_userpay_allowed_'. $object->type, 0)
это включение/выключение в зависимости от типа. Если $object = $node, то от типа материала.
variable_get() - эта функция берет по ключу свойство переменной
variable_set() - эта устанавливает нужное свойство
Все переменные хранятся в таблице {variable}, и подгружается при первом обращении. (фактически на этапе инициализации)
Кто может написать дополнение для скрытия полей CCK и за сколько денег?
Всех ССК полей или конкретных? напишите мне в личку
Спасибо! Буду пробовать.
После переписки с автором, удалось заставить модуль работать. Оказалось, что warning-и сыпятся из-за новой версии php, как фиксить нашел вот тут: http://drupal.org/node/1004766
Мне нужен был еще вывод баланса в определенном блоке, это оказалось очень просто:
pg_account_balance_value($user->uid)
PS: изначально планировалась платная помощь, но в самый ответственный момент, автор перестал отвечать. Тем не менее в знак признательности хотел отправить 100 рублей на кошелек, но в "Связном" и в мультикассах для webmoney требуется кроме номера кошелька номер сотового телефона владельца кошелька... маразм...
PPS: так как при внедрении пришлось достаточно серьезно разбираться с модулем, могу теперь отвечать на вопросы
А мне не хватает некоторых способов фильтрации во views.
Разбираю модуль дальше.
Если найдете что-то полезное для общества - опубликуйте пожалуйста.
Разобрался как скрывать отдельные сск поля, как ставить дефолтную цену (если кому надо - пишите в пм)
А вот как сделать так чтобы нода удалялась или снималась с публикации после, допустим, 3х покупок - не пойму. Есть у кого-нибудь идеи?
Включить складской учет, sql снипетом снимать ноду с публикации, когда товара на складе не останется.
Неужели нет попроще варианта? Например, как-нибудь связать с triggers или rules
если бы было в поиске бы нашли
у меня галка userpoints nodeaccess allowed в настройка типа материала почему-то слетает :/
не работает модуль вот и слетает.
Ищу человека, который допишет модуль так, чтобы нода снималась с публикации после 5 покупок.
kalahooo@gmail.com
Сделал чтобы галочка userpoints nodeaccess allowed не слетала, но очень кривым способом. Кому надо - пишите
пиши уж сюда
В программировании не силен, по-этому не хотелось позориться) а да ладно... вдруг кому пригодится
Через phpmyadmin посмотрел таблицу variable. Нашел userpoints_allowed_ со значением i:1;
Создал новый тип материала, ну допустим material. Затем вручную добавил строчку в "variable" userpoints_allowed_material со значением i:1;
После просто поставил галку "userpoints nodeaccess allowed" и всё запахало (понятно, что только для этого типа).
p.s. камнями не кидать