Але цей модуль вкрай не продуктивний, особливо неповороткий і працює з помилками.
Наш лічильник буде вміти:
Все це ми реалізуємо без володіння мовами програмування.
Крок 1. Встановлення необхідних модулів
Нам знадобиться встановити наступні модулі:
Встановлюємо їх в папку sites / default / files. переходимо на сторінку включення модулів (admin / modules) і включаємо наступні:
Запускаємо cron, чистимо кеш (про всяк випадок) і переходимо до наступного розділу.
Крок 2. Налаштування матеріалу
Налаштуємо наш матеріал. Для цього перейдемо на сторінку управління полями.
Додаємо наступні поля:
В налаштуваннях вказуємо поле обов'язковим для заповнення, мінімальне значення "0" і значення за замовчуванням "0". Скріншот налаштувань.
В налаштуваннях так само вибираємо поле обов'язковим для заповнення. У додаткових налаштуваннях прибираємо положення міток частині дати і встановлюємо значення за замовчуванням "Сейчас". Обробка часового поясу ставимо "Без обробки часового поясу". Скріншот налаштувань.
Зверніть увагу, якщо Ви плануєте вважати статистику кількох типів матеріалу - потрібно додати ці ж поля в кожному з них.
Наш матеріал готовий, перейдемо до наступного кроку.
Крок 3. Створення правила
Додаємо нове правило
Переходимо на сторінку admin / config / workflow / rules і створюємо правило:
Наше правило створено, перейдемо до його налаштуванні.
У блоці "Умови" встановлюється перевірка матеріалу на відповідності певним умовам. Додамо кілька перевірок:
Перевіряємо роль користувача
Вибираємо умова "Користувач має роль (і)".
На сторінці, в селекторі даних вибираємо site: current-user.
У наступному блоці вибираємо роль користувача Анонімний користувач.
У селекторі даних вибираємо node
Цих умов нам вистачить для виконання нашого завдання. Якщо Вам потрібно робити більш детальну перевірку - додавайте свої.
Назва блоку "Дії" говорить сама за себе. Сюди будемо додавати дії, які потрібно буде виробляти якщо вищевказані умови будуть дотримані.
Додамо нову дію.
Вибираємо зі списку "Обчислити значення".
В налаштуваннях дії, в селекторі Вхідне значення 1 вибираємо наше поле "node: field-counter-total".
Вхідне значення 2 вказуємо "1"
Додаємо дію "Обчислити значення" ще раз.
Встановлюємо обчислені значення лічильника
Додаємо дію "Установити значення".
У селекторі вибираємо "node: field-counter-total".
У блоці Значення перемикається в режим вибору даних.
І вибираємо нашу змінну "total".
Ну і як значення додаємо змінну "today".
Значення зберегли. Йдемо далі.
Додаємо знайоме нам дію Встановити значення.
У селекторі вибираємо "node: field-counter-date".
Далі, як значення встановлюємо поточну дату ( "now").
У цьому нам знову допоможе модуль Rules, тепер уже зі зв'язкою з VBO.
Додаємо уявлення VBO
Перейдемо на сторінку створення уявлень (admin / structure / views / add) і додамо уявлення з наступними параметрами:
Зберігаємо уявлення і переходимо до додавання полів.
В принципі, поля нас не особливо цікавлять, тому ми не будемо нічого там правити, тільки ось додамо поле VBO:
Знаходимо поле "Масові операції: Вміст" і додаємо його в уявлення.
Налаштування можна ніякі не вносити, просто зберігаємо поле.
У блоці "Постранічний навігатор" вибираємо в налаштуваннях відображення всіх елементів.
Тепер додамо пару своїх фільтрів.
В налаштуваннях фільтра вибираємо:
- Date selection form element - "Текст"
- Filter granularity - "День"
Тиснемо "Застосувати і продовжити"
- Оператор - "Менше або дорівнює"
- У СЕЛЕКТА вибираємо "Enter a relative date"
- В з'явилося поле вводимо "yesterday"
Перейдемо на сторінку компонентів (admin / config / workflow / rules / components) і додамо новий компонент:
В якості плагіна компонента вибираємо "Правило".
- Ім'я - "Обнулення лічильника за сьогодні"
- Машинне ім'я - "null_today_counter"
- Змінні (Тип даних) - "Матеріал"
- Змінні (Метка) - "Нода"
- Змінні (Машинне ім'я) - "node"
- Змінні (Використання) - "Параметр"
На сторінці компонента додаємо умова "Тип матеріалу".
Додаємо дію "Установити значення".
У селекторі даних вводимо значення "node: field-counter-today".
Як встановлюється значення пишемо "0" і зберігаємо дію. Скріншот налаштування.
Додаємо правило обробляє список VBO
Переходимо на сторінку додавання правил (admin / config / workflow / rules) і створюємо нове з наступними параметрами:
Зберігаємо правило і додаємо нову дію "Завантажити список ID сутностей з VBO view"
Аргументи не задаємо.
В налаштуваннях змінних пишемо:
- Мітка змінної - "Список матеріалів"
- Ім'я змінної - "node_list"
І зберігаємо налаштування. Скріншот налаштувань.
Тепер додаємо цикл по витягнутим Нодаме:
Як циклу вибираємо node-list. і зберігаємо налаштування.
Додаємо дію в цикл:
Дія "Витягти сутність по ID". Як значення вибираємо матеріал.
Блок "Ідентифікатор" перемикаємо в режим вибору даних, і в селекторі вводимо "list-item".
Додаємо ще одну дію в цикл. Вибираємо створений нами компонент правил (в кінці списку, в блоці "Компоненти") "Обнулення лічильника за сьогодні".
У селекторі даних вводимо "entity-fetched" і зберігаємо дію.
Головне тепер налаштувати запуск Cron на сервері, хоча б раз на добу.
Не впевнений що в правилах можна отримати IP поточного користувача. Таке хіба-що програмно робити.
Та й IP вже давно не показник унікальності користувача. Більш правильно звіряти по сесії / кукам, чого Rules не дозволяє реалізувати штатними засобами.
ЗИ - дякую за позитивну оцінку, але матеріал розрахований більше як показ можливостей Rules'ов, ніж робоче рішення.