На сайте есть нода, предоставляющая некий сервис с помощью полей, видимых для роли "Авторизированный пользователь". Необходимо ограничить доступ к этому сервису в ноде с помощью следующей конструкции:
Если юзер (роль "Авторизированный пользователь") посетил ноду (номер ноды Х) более чем N раз в течении срока (скажем, 1 месяц), то поменять роль для такого юзера (выполнившего перечисленные условия) на другую роль ("Авторизированный пользователь 2 без доступа к полям ноды Х") на определённый срок (к примеру, 1 месяц). Плюс выслать письмо на ящик этого юзера с уведомлением: [юзер], вы превысили лимит посещений страницы [титл ноды Х], доступ к ней ограничен на срок [срок ограничения].
Вроде бы всё просто, весь необходимый функционал для такого решения предоставляет Друпал - включены модули Rules, Date, Token, Statistics. После танцев с модулем Rules стало очевидно, что такую конструкцию невозможно выполнить из-за отсутствия персональных счётчиков посещений для каждого юзера. Д.орг перекопал в поиске подобных модулей статистики, не нашёл нужного. Сниппетов подобных счётчиков тоже не нашёл.
Может кто уже двигался в этом направлении, подскажите.
Комментарии
Да вроде ничего сложного не должно быть, я делал похожее для учета посещений, только не нод, а страниц views, вернее даже не страниц, а количества отображений на страницах views каждого материала.
Я так думаю можно создать материал со следующими полями: ID ноды (или, наверное можно и URL), пользователь, количество посещений ноды. И перед отображением ноды проверять значения в этом материале.
Более правильно, наверное будет сделать свой модуль, который будет работать с таблицей в базе, т.к. материал с тремя полями - это более сложный запрос, чем запрос к одной таблице с тремя полями.
https://drupal.org/project/user_stats
https://drupal.org/project/roleassign
Это же сколько раз юзер логинился, не? А ТСу надо сколько раз юзер посещал определенную ноду.
его не просто понять, но я понял, что ещё и это надо.
тогда
https://drupal.org/project/nodeviewcount
«Unlike statistics module, this module records each view of node with user uid and timestamp. So now you can know how many times a user viewed node by day, week, month and etc»
Совершенно верно, этот функционал более всего подходит для форумов (вывод доп.информации о юзере).
Пытался добавить эти поля в существующий тип материала, но таких полей в списке нет. Может имелось ввиду сделать views с такими полями, но при выборе формата Поле таких полей, кроме Nid, тоже нет. Или я что-то не так понял.
Мне кажется, перед формированием ноды сначала идёт проверка данных того юзера, кто запрашивает эту страницу, а потом уже всё остальное построение. И поэтому в БД уже должна храниться статистика по каждому пользователю, открывшему ранее эту ноду, вернее, данные суммирующего счётчика для конкретного юзера по этой ноде. А это уже кастомный модуль как минимум с одной таблицей.
Как-то сумбурно написал.
Пока писАл, gedeon уже отпостился. Буду пробовать https://drupal.org/project/nodeviewcount, сразу отпишусь.
Оно, то что нужно!
Модуль интегрирован с Views, создаёт страницу просмотров в админке по выбранным типам материалов и выбранным ролям. При создании views-страницы можно добавлять критерии фильтрации 1.Node id и 2.Who view of node, а это то, что нужно из всего, что можно. Т.е. в БД будет постоянно обновляться таблица по количеству просмотров зарегеных юзеров по нужным нодам. А уже вытянуть оттуда данные для Rules - дело техники.
Хреново то, что делаю эту статистику для нового сайта, куда таблица юзеров перенесена, но посещений ещё нет. Т.е. нет статистики и проверить пока невозможно. Но это вопрос времени.
Спасибо за диалог gedeon и Sandy Big Boy!
Да, может может быть https://drupal.org/project/nodeviewcount и то что надо. В каком-то проекте и его пытался использовать. Но моя задача была более сложная.
Если через Rules нужные данные удастся вытянуть, то гуд.