Я вижу несколько сопсоб решения поставленных мною задач, но инстересует мнение сообщества, наверняка многие сталкивалися с такими же проблемами..
Что нужно
Для пользователей на сайте нужно сделать баланс пользователя, с возможностью автоматического пополнения через карту и sms
Эти средства пользователи могут использовать на рекламные услуги на сайте, например поднимать объявления, вешать банер на свободную позицию на определенный срок.
Снимать средаства пользователи не могут.
+ Для баланса будем использовать userpoints
+ Для пополнения используем Drupal Commerce + rules (еще не тестил но вроде как должно работать)
Теперь несколько впросов для обсуждения.
Как сделать правильнее:
1. кнопку на станице объявления типа "поднять в топ", после нажатия на нее объявления поднимается вверх на срок выбранный пользователем, после подсчитанная цена списывается из баланса.
2. кнопка ... типа "поднять", дальше пользователь выбирает приоритет размещения, допустип есть 1,2,3 с разными ценами, и период размещения, после списывается средства и объявляния поднимается.
3. если в пользователя при заказе недостаточно в балансе, ему предлагается оплатить недостающую суму и автоматом идет завершения заказа.
........
Комментарии
Правильнее не использовать коммерц и пр, они не для этого предназначены
Спасибо за ответ.
Писать модуль не выход в моем случае.
Мои соображения..
Я сейчас кнопку 'поднять в топ' деляю ссылкой на webform, в форму передается айди ноды, есть другие варианты?
Присоединяюсь к обсуждению. В настоящий момент пытаюсь решить подобную задачу. Имеется доска объявлений и сопутствующие услуги (продлить, поднять в топ, разместить в блоке и пр.).
От коммерца действительно пришлось отказаться, обнаружил модуль balance, который работает в связке с robokassa
и userpoints.
Дополнительно установил модуль Flags для активации улуг.
На выходе должно получиться следующее:
- пользователь создает объявление, указывает срок публикации и сохраняет.
- срабатывает рулс, проверяем баланс пользователя, если он больше или равен таксе публикуем объявление, списываем поинты, выводим сообщение "Успешно" и запускаем Планировщик. Если баланс меньше таксы выводим сообщение "Пополнить" и перенаправляем на страницу пополнения баланса.
- по истечении указанного срока снимаем с публикации, высылаем письмо юзеру.
Дальше флаги. В профиле юзера создаем вкладку views с его объявлениями, к которым добавляем флаги поднять в топ и пр. При активации флага срабатывает рулс, списываем поинты, меняем значения полей.
Сейчас идет борьба с рулсами...
Есть вебформа
поле id - nid другого материала, другого типа
поле service - пользователь выбирает услугу
В руласах создаю
events
- после отправки вебформы
condition
- Webform has name - где выбираю нужную вебформу
action
- Добавить переменную - достаю id
- Добавить переменную - достаю service
---------------------------------------
а дальше мне нужно сделать
-- активация ?- Установить значение - для материала указанного в поле id и изменить в нем поле например типа list "реклама". ! Но как вытащить это поле? говорят через fetch можно но у меня ничего не получается.
-- деактивация ?- Запланировать выполнение компонента - тут не хочет принимать переменную id в последнем поле где "Node"
Тут проблема в том что правило подтягивает данные типа материала "вебформ" а мне нужно еще и данные другого типа материала.
Есть соображения?
помог condition rules
...продолжаем
Вебформа работает, поинты снимает, объявление поднимается + через определенное время снимается.
!НО
Нужно сделать проверку в вебформе, типа если field_top равно 2 вебформа будет работать.
например пользователь заходит в форму по ссылке domain.com/form/1084?id=973
где 973 это nid ноды которою нужно поднять
Как решить задачу?
А пока все думают, в догонку "пополнения баланса" без коммерца
Можна ли реализовать следущей логикой
просто форма вебформ с чиловым полем - пользователь вписывает суму и жмет оплатить - его перенапрявляет на шлюз оплаты, туда передает айди пользователя и суму.
а вот каким макаром приходит ответ от шлюза что оплата произведена и заставить сработать rules?
Не совсем уловил, для чего webform?
Я делал несколько иначе. В профиле пользователя вывел views с таблицей всех его объявлений и навесил флаг "Поднять в ТОП". У ноды (по умолчанию) есть поле "Закреплять вверху списков", его и решил использовать. При активации флага проверяем состояние баланса юзера, в случае недостаточного количества поинтов редиректим на форму пополнения, иначе списываем денежки и тем же рулсом ставим чекбокс "Закреплять вверху списков".
Таким образом пользователь визуально может контролировать состояние всех его объявлений.
Задача стоит не просто дать возможность поднимать объявление, но и сделить выбор - см. скрин
У меня все решилось без флагов.
В профиле также есть список материалов и ссылку буду формировать такого плана domain.com/form/1084?id=973
Согласен, визуальное управление состоянием очень важно, по этому нужно еще будет показать пользователю например "1 день 2 часа до завершения -> продлить-ссылка", что то похожее я реализовал с помощью дополнительного поля типа date(завершение рекламы) в ноде, но возможно есть другой выход, ваше мнение?
.......
Механизм понятен. Может подойдет Rules link?
Что касается даты завершения, согласен. Так же думаю стоит записывать в поле и при каждом запросе вычислять оставшееся время до завершения.