Створюємо лічильник переглядів матеріалу, blogpost

Але цей модуль вкрай не продуктивний, особливо неповороткий і працює з помилками.

Наш лічильник буде вміти:

Все це ми реалізуємо без володіння мовами програмування.

Крок 1. Встановлення необхідних модулів

Нам знадобиться встановити наступні модулі:

Встановлюємо їх в папку sites / default / files. переходимо на сторінку включення модулів (admin / modules) і включаємо наступні:

Запускаємо cron, чистимо кеш (про всяк випадок) і переходимо до наступного розділу.

Крок 2. Налаштування матеріалу

Налаштуємо наш матеріал. Для цього перейдемо на сторінку управління полями.

Додаємо наступні поля:

В налаштуваннях вказуємо поле обов'язковим для заповнення, мінімальне значення "0" і значення за замовчуванням "0". Скріншот налаштувань.

В налаштуваннях так само вибираємо поле обов'язковим для заповнення. У додаткових налаштуваннях прибираємо положення міток частині дати і встановлюємо значення за замовчуванням "Сейчас". Обробка часового поясу ставимо "Без обробки часового поясу". Скріншот налаштувань.

Зверніть увагу, якщо Ви плануєте вважати статистику кількох типів матеріалу - потрібно додати ці ж поля в кожному з них.

Наш матеріал готовий, перейдемо до наступного кроку.

Крок 3. Створення правила

Додаємо нове правило

Переходимо на сторінку admin / config / workflow / rules і створюємо правило:

Створюємо лічильник переглядів матеріалу, blogpost

Створюємо лічильник переглядів матеріалу, blogpost

Наше правило створено, перейдемо до його налаштуванні.

У блоці "Умови" встановлюється перевірка матеріалу на відповідності певним умовам. Додамо кілька перевірок:

Створюємо лічильник переглядів матеріалу, blogpost

Перевіряємо роль користувача

Вибираємо умова "Користувач має роль (і)".

Створюємо лічильник переглядів матеріалу, blogpost

На сторінці, в селекторі даних вибираємо site: current-user.

Створюємо лічильник переглядів матеріалу, blogpost

У наступному блоці вибираємо роль користувача Анонімний користувач.

Створюємо лічильник переглядів матеріалу, blogpost

У селекторі даних вибираємо node

Створюємо лічильник переглядів матеріалу, blogpost

Цих умов нам вистачить для виконання нашого завдання. Якщо Вам потрібно робити більш детальну перевірку - додавайте свої.

Назва блоку "Дії" говорить сама за себе. Сюди будемо додавати дії, які потрібно буде виробляти якщо вищевказані умови будуть дотримані.

Додамо нову дію.

Створюємо лічильник переглядів матеріалу, blogpost

Вибираємо зі списку "Обчислити значення".

В налаштуваннях дії, в селекторі Вхідне значення 1 вибираємо наше поле "node: field-counter-total".

Створюємо лічильник переглядів матеріалу, blogpost

Вхідне значення 2 вказуємо "1"

Додаємо дію "Обчислити значення" ще раз.

Створюємо лічильник переглядів матеріалу, blogpost

Встановлюємо обчислені значення лічильника

Додаємо дію "Установити значення".

У селекторі вибираємо "node: field-counter-total".

Створюємо лічильник переглядів матеріалу, blogpost

У блоці Значення перемикається в режим вибору даних.

Створюємо лічильник переглядів матеріалу, blogpost

І вибираємо нашу змінну "total".

Створюємо лічильник переглядів матеріалу, blogpost

Ну і як значення додаємо змінну "today".

Значення зберегли. Йдемо далі.

Додаємо знайоме нам дію Встановити значення.

У селекторі вибираємо "node: field-counter-date".

Створюємо лічильник переглядів матеріалу, blogpost

Далі, як значення встановлюємо поточну дату ( "now").

Створюємо лічильник переглядів матеріалу, blogpost

У цьому нам знову допоможе модуль Rules, тепер уже зі зв'язкою з VBO.

Додаємо уявлення VBO

Перейдемо на сторінку створення уявлень (admin / structure / views / add) і додамо уявлення з наступними параметрами:

Зберігаємо уявлення і переходимо до додавання полів.

В принципі, поля нас не особливо цікавлять, тому ми не будемо нічого там правити, тільки ось додамо поле VBO:

Створюємо лічильник переглядів матеріалу, blogpost

Знаходимо поле "Масові операції: Вміст" і додаємо його в уявлення.

Створюємо лічильник переглядів матеріалу, blogpost

Налаштування можна ніякі не вносити, просто зберігаємо поле.

У блоці "Постранічний навігатор" вибираємо в налаштуваннях відображення всіх елементів.

Створюємо лічильник переглядів матеріалу, blogpost

Створюємо лічильник переглядів матеріалу, blogpost

Тепер додамо пару своїх фільтрів.

Створюємо лічильник переглядів матеріалу, blogpost

В налаштуваннях фільтра вибираємо:

Створюємо лічильник переглядів матеріалу, blogpost

Створюємо лічильник переглядів матеріалу, blogpost

  • Date selection form element - "Текст"
  • Filter granularity - "День"

Створюємо лічильник переглядів матеріалу, blogpost

Тиснемо "Застосувати і продовжити"

  • Оператор - "Менше або дорівнює"
  • У СЕЛЕКТА вибираємо "Enter a relative date"
  • В з'явилося поле вводимо "yesterday"

Створюємо лічильник переглядів матеріалу, blogpost

Перейдемо на сторінку компонентів (admin / config / workflow / rules / components) і додамо новий компонент:

Створюємо лічильник переглядів матеріалу, blogpost

В якості плагіна компонента вибираємо "Правило".

Створюємо лічильник переглядів матеріалу, blogpost

  • Ім'я - "Обнулення лічильника за сьогодні"
  • Машинне ім'я - "null_today_counter"
  • Змінні (Тип даних) - "Матеріал"
  • Змінні (Метка) - "Нода"
  • Змінні (Машинне ім'я) - "node"
  • Змінні (Використання) - "Параметр"

На сторінці компонента додаємо умова "Тип матеріалу".

Додаємо дію "Установити значення".

У селекторі даних вводимо значення "node: field-counter-today".

Як встановлюється значення пишемо "0" і зберігаємо дію. Скріншот налаштування.

Додаємо правило обробляє список VBO

Переходимо на сторінку додавання правил (admin / config / workflow / rules) і створюємо нове з наступними параметрами:

Зберігаємо правило і додаємо нову дію "Завантажити список ID сутностей з VBO view"

Аргументи не задаємо.

В налаштуваннях змінних пишемо:

  • Мітка змінної - "Список матеріалів"
  • Ім'я змінної - "node_list"

І зберігаємо налаштування. Скріншот налаштувань.

Тепер додаємо цикл по витягнутим Нодаме:

Як циклу вибираємо node-list. і зберігаємо налаштування.

Додаємо дію в цикл:

Створюємо лічильник переглядів матеріалу, blogpost

Дія "Витягти сутність по ID". Як значення вибираємо матеріал.

Блок "Ідентифікатор" перемикаємо в режим вибору даних, і в селекторі вводимо "list-item".

Додаємо ще одну дію в цикл. Вибираємо створений нами компонент правил (в кінці списку, в блоці "Компоненти") "Обнулення лічильника за сьогодні".

У селекторі даних вводимо "entity-fetched" і зберігаємо дію.

Головне тепер налаштувати запуск Cron на сервері, хоча б раз на добу.

Не впевнений що в правилах можна отримати IP поточного користувача. Таке хіба-що програмно робити.

Та й IP вже давно не показник унікальності користувача. Більш правильно звіряти по сесії / кукам, чого Rules не дозволяє реалізувати штатними засобами.

ЗИ - дякую за позитивну оцінку, але матеріал розрахований більше як показ можливостей Rules'ов, ніж робоче рішення.