Хаки и Скрипты Next Generation CMS

Как работает код Twig для отображе...

irbees2008 irbees2008 Опубликовано - 2 - августа Интерфейс
  • Автор: irbees2008
  • Адаптировал: irbees2008
  • Уровень сложности исполнения: сам думай

Всем привет, был задан вопрос - как задать в новости определенное количество просмотров?
1. Ну в админке можно в самой новости при редактировании
2026-08-02_15-17-42_ce2bf608.png (169.14 Kb)

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
.

Она рассчитывается следующим образом:

  1. Берется ID новости news.id.
  2. Умножается на 37.
  3. Берется остаток от деления на 90 с помощью оператора %.
  4. К полученному значению прибавляется 10.

В результате получается число в диапазоне от 10 до 99.

Примеры вычисления

ID новостиВычислениеfakeViews
110 + ((1 × 37) % 90)47
210 + ((2 × 37) % 90)84
310 + ((3 × 37) % 90)31
1010 + ((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 = 5
news.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

Итог

Данный код позволяет:

  • не показывать новым публикациям слишком маленькое количество просмотров;
  • создать естественный эффект активности на сайте;
  • автоматически переключаться на реальные просмотры, как только их станет больше вычисленного значения;
  • получать стабильное значение для каждой новости без хранения дополнительных данных в базе данных.

Можешь почитать и вот эту статейку "Прелоадер с затемнением фона"

Опрос

Ваше мнение

На каком движке ваш сайт?
Результаты

Последние комментарии

Теги

Anything in here will be replaced on browsers that support the canvas element

Статистика

  • Caйт cущecтвуeт: 4962 дня
  • Статических страниц: 10
  • Категорий: 28
  • Новостей: 626
  • Неопубликованных новостей: 8
  • Комментариев: 259
  • Зарегестрированных пользователей: 1497
  • Онлайн всего: [12]
  • Гости: [11]
  • Поисковые роботы: [1] Google
  • Сегодня нас посетили: [7] irbees2008, dankeanke, Яндекс, Google, Яндекс, Google, Google
  • SQL запросов: 43
  • Генерация страницы: 0.074сек
  • Потребление памяти: 9.404 Mb 
  •   Яндекс.Метрика