Счётчик просмотров Winter CMS

У нас есть запись и мы хотим считать количество её просмотров на сайте. Значит нам нужно сделать для неё счётчик просмотров. Делается это довольно просто.

Сначала для модели нужно добавить поле которое будет этим самым количеством просмотров. Назовём его count_views. Чтобы это поле было в таблице базы данных, в файле миграции прописываем:

plugins\author\plugName\updates\create_items_table.php
$table->integer('count_views')->index()->default(0);

Теперь в файле модели внутри класса добавляем метод increaseViewCount, который при вызове будет добавлять +1 просмотр нашему счётчику:

plugins\author\plugName\models\Item.php
public function increaseViewCount() {
    $this->timestamps = false;
    $this->increment('count_views');
    $this->timestamps = true;
}

Наш счётчик полностью готов к применению.

Добавляем просмотр

Добавлять +1 просмотр к счётчику нам нужно тогда, когда выводится страница. Как правило это делается в компоненте выводящем экземпляр модели внутри функции onRun.

Вот такой код:

plugins\author\plugName\components\Item.php
$item = Item::whereSlug($this->property('slug'))->first();

if (empty($item)) {
    return $this->controller->run('404');
}

$item->increaseViewCount();
  • В первой строке кода мы делаем запрос записи из базы данных.
  • Дальше идёт блок проверки на то есть ли запрашиваемая запись. В случае если её нет (был указан несуществующий slug), контроллеру возвращается 404 ответ и дальнейшее выполнение кода прерывается.
  • В случае успешной проверки наличия записи, добавляем +1 просмотр, вызвав у модели метод increaseViewCount.

Вывод количества просмотров в админке

Ну и на последок выводим в админке в списке записей наш столбец с количеством просмотров:

plugins\author\plugName\models\item\columns.yaml
count_views:
    label: Просмотров
    sortable: true
    clickable: false
    cssClass: text-center
input для ввода номера телефона в бэкенде
input для ввода номера телефона в бэкенде Как в бэкенде Winter CMS сделать поле с маской для ввода номера телефона с помощью javascript библиотеки Inputmask.
Доступ к элементам на фронте только для админов
Доступ к элементам на фронте только для админов Как в Winter CMS сделать доступ к отдельным элементам или фрагментам выводимым на фронтенде только для бэкенд пользователей которые авторизованы в бэкенде.
Как восстановить пароль админа
Как восстановить пароль админа Инструкция с решением того как восстановить пароль админа к административной части сайта на Winter CMS (если забыли пароль или был утрачен доступ).
Комментарии 0

*** чтобы писать комментарии.