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

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

Сначала для модели нужно добавить поле которое будет этим самым количеством просмотров. Назовём его 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

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