- Автор: irbees2008
- Адаптировал: irbees2008
- Уровень сложности исполнения: сам думай
![]()
Всем привет, был задан вопрос - как задать в новости определенное количество просмотров?
1. Ну в админке можно в самой новости при редактировании 
2.Можно в шаблоне применить вот эту конструкцию
Этот код используется для того, чтобы новые статьи не отображались с нулевым количеством просмотров. Если реальных просмотров мало, выводится заранее вычисленное число. Когда реальные просмотры становятся больше, отображается настоящее значение.
Исходный код
{% set fakeViews = 10 + ((news.id * 37) % 90) %}
{% set displayViews = news.views < fakeViews ? fakeViews : news.views %}
{{ displayViews }}Разбор по строкам
1. Вычисление минимального количества просмотров
{% set fakeViews = 10 + ((news.id * 37) % 90) %}Создается переменная
fakeViews.Она рассчитывается следующим образом:
- Берется ID новости news.id.
- Умножается на 37.
- Берется остаток от деления на 90 с помощью оператора %.
- К полученному значению прибавляется 10.
В результате получается число в диапазоне от 10 до 99.
Примеры вычисления
| ID новости | Вычисление | fakeViews |
|---|---|---|
| 1 | 10 + ((1 × 37) % 90) | 47 |
| 2 | 10 + ((2 × 37) % 90) | 84 |
| 3 | 10 + ((3 × 37) % 90) | 31 |
| 10 | 10 + ((10 × 37) % 90) | 20 |
Число выглядит случайным, но для каждой новости оно всегда будет одинаковым.
2. Выбор отображаемого количества просмотров
{% set displayViews = news.views < fakeViews ? fakeViews : news.views %}Используется тернарный оператор.
Логика работы следующая:
- Если реальных просмотров меньше, чем fakeViews, отображается fakeViews.
- Если реальных просмотров больше или равно fakeViews, отображается настоящее количество просмотров.
Этот же код можно записать через обычный if:
{% if news.views < fakeViews %}
{% set displayViews = fakeViews %}
{% else %}
{% set displayViews = news.views %}
{% endif %}3. Вывод результата
{{ displayViews }}Выводится итоговое значение переменной displayViews.
Пример работы
Пример 1
news.id = 5news.views = 3
Расчет:
fakeViews = 10 + ((5 × 37) % 90)= 10 + 5
= 15
Так как 3 < 15, пользователю будет показано:
15Пример 2
news.id = 5
news.views = 100
Расчет:
fakeViews = 15
Так как 100 > 15, будет показано:
100Итог
Данный код позволяет:
- не показывать новым публикациям слишком маленькое количество просмотров;
- создать естественный эффект активности на сайте;
- автоматически переключаться на реальные просмотры, как только их станет больше вычисленного значения;
- получать стабильное значение для каждой новости без хранения дополнительных данных в базе данных.
Можешь почитать и вот эту статейку "Прелоадер с затемнением фона"
Это тоже интересно
- 15.05.25Плагин NSM
- 24.03.25Теги и Ключевые слова





