Userpoints - баланс. Drupal Commerce + Rules - пополнения балансу. А что дальше...

Главные вкладки

Аватар пользователя zeroif zeroif 5 января 2015 в 20:09

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

Что нужно
Для пользователей на сайте нужно сделать баланс пользователя, с возможностью автоматического пополнения через карту и sms
Эти средства пользователи могут использовать на рекламные услуги на сайте, например поднимать объявления, вешать банер на свободную позицию на определенный срок.
Снимать средаства пользователи не могут.

+ Для баланса будем использовать userpoints
+ Для пополнения используем Drupal Commerce + rules (еще не тестил но вроде как должно работать)

Теперь несколько впросов для обсуждения.

Как сделать правильнее:
1. кнопку на станице объявления типа "поднять в топ", после нажатия на нее объявления поднимается вверх на срок выбранный пользователем, после подсчитанная цена списывается из баланса.
2. кнопка ... типа "поднять", дальше пользователь выбирает приоритет размещения, допустип есть 1,2,3 с разными ценами, и период размещения, после списывается средства и объявляния поднимается.
3. если в пользователя при заказе недостаточно в балансе, ему предлагается оплатить недостающую суму и автоматом идет завершения заказа.

........

Комментарии

Аватар пользователя zeroif zeroif 7 января 2015 в 17:57

Спасибо за ответ.
Писать модуль не выход в моем случае.

Мои соображения..
Я сейчас кнопку 'поднять в топ' деляю ссылкой на webform, в форму передается айди ноды, есть другие варианты?

Аватар пользователя lipinart lipinart 20 января 2015 в 8:55

Присоединяюсь к обсуждению. В настоящий момент пытаюсь решить подобную задачу. Имеется доска объявлений и сопутствующие услуги (продлить, поднять в топ, разместить в блоке и пр.).
От коммерца действительно пришлось отказаться, обнаружил модуль balance, который работает в связке с robokassa
и userpoints.
Дополнительно установил модуль Flags для активации улуг.

На выходе должно получиться следующее:
- пользователь создает объявление, указывает срок публикации и сохраняет.
- срабатывает рулс, проверяем баланс пользователя, если он больше или равен таксе публикуем объявление, списываем поинты, выводим сообщение "Успешно" и запускаем Планировщик. Если баланс меньше таксы выводим сообщение "Пополнить" и перенаправляем на страницу пополнения баланса.

- по истечении указанного срока снимаем с публикации, высылаем письмо юзеру.

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

Сейчас идет борьба с рулсами...

Аватар пользователя zeroif zeroif 9 февраля 2015 в 18:00

Есть вебформа
поле id - nid другого материала, другого типа
поле service - пользователь выбирает услугу

В руласах создаю
events
- после отправки вебформы
condition
- Webform has name - где выбираю нужную вебформу
action
- Добавить переменную - достаю id
- Добавить переменную - достаю service
---------------------------------------
а дальше мне нужно сделать
-- активация ?- Установить значение - для материала указанного в поле id и изменить в нем поле например типа list "реклама". ! Но как вытащить это поле? говорят через fetch можно но у меня ничего не получается.
-- деактивация ?- Запланировать выполнение компонента - тут не хочет принимать переменную id в последнем поле где "Node"

Тут проблема в том что правило подтягивает данные типа материала "вебформ" а мне нужно еще и данные другого типа материала.

Есть соображения?

Аватар пользователя zeroif zeroif 10 февраля 2015 в 17:13

помог condition rules

...продолжаем

Вебформа работает, поинты снимает, объявление поднимается + через определенное время снимается.

!НО

Нужно сделать проверку в вебформе, типа если field_top равно 2 вебформа будет работать.

например пользователь заходит в форму по ссылке domain.com/form/1084?id=973
где 973 это nid ноды которою нужно поднять

Как решить задачу?

Аватар пользователя zeroif zeroif 10 февраля 2015 в 19:59

А пока все думают, в догонку "пополнения баланса" без коммерца

Можна ли реализовать следущей логикой

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

Аватар пользователя lipinart lipinart 11 февраля 2015 в 10:55

Не совсем уловил, для чего webform?

Я делал несколько иначе. В профиле пользователя вывел views с таблицей всех его объявлений и навесил флаг "Поднять в ТОП". У ноды (по умолчанию) есть поле "Закреплять вверху списков", его и решил использовать. При активации флага проверяем состояние баланса юзера, в случае недостаточного количества поинтов редиректим на форму пополнения, иначе списываем денежки и тем же рулсом ставим чекбокс "Закреплять вверху списков".

Таким образом пользователь визуально может контролировать состояние всех его объявлений.

Аватар пользователя zeroif zeroif 10 ноября 2015 в 11:50

Задача стоит не просто дать возможность поднимать объявление, но и сделить выбор - см. скрин

У меня все решилось без флагов.
В профиле также есть список материалов и ссылку буду формировать такого плана domain.com/form/1084?id=973
Согласен, визуальное управление состоянием очень важно, по этому нужно еще будет показать пользователю например "1 день 2 часа до завершения -> продлить-ссылка", что то похожее я реализовал с помощью дополнительного поля типа date(завершение рекламы) в ноде, но возможно есть другой выход, ваше мнение?

.......

Аватар пользователя lipinart lipinart 19 февраля 2015 в 12:54

Механизм понятен. Может подойдет Rules link?

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