Мануал: Функции шаблонов

Logan22

Гений мысли
Проверенный
Знаток Lineage2
Орден Почета
Мастер реакций
Любитель реакций
Знаток письма
Медаль Благодарности
Старожил I степени
Медаль за активность на Форуме
За заслуги перед форумом
Преподаватель
За веру и верность форуму
Сообщения
1 591
Розыгрыши
0
Решения
3
Репутация
1 724
Реакции
1 416
Баллы
1 808
Информация актуальная для SphereWeb 2.
Синтаксис для работы с шаблоном можно ознакомиться на официальном сайте .

Для того чтоб в шаблоне указать путь к CSS / JS / IMG
{{ template }} - выводит ссылку к папке с шаблоном.
1725386390777.png


Языки сайта.
1725384937374.png
Есть несколько функций для отображения.
Функция getLangList() - возвращает массив языков используемых.
Первый в списке массива будет активный язык (выбранный пользователем).
Каждый массив имеет 3 объекта.
1. lang (тип string) - код языка : ru, en, es
2. name (тип string) - название языка: русский, english, español
3. isActive (тип bool) - выбранный ли пользователем этот язык.
Пример как использовать. Мы будем использовать цикл, так как имеем дело с массивом.
HTML:
{% for lang in getLangList() %}
  Мой сайт использует язык {{ lang.lang }}, который называется {{ lang.name }}, и активен ли он: {{ lang.isActive }}
{% endfor %}
Результат
1725385954780.png

Используйте функцию {{ lang_active() }}, которая вернет объект.
{{ lang_active().lang }} - код языка : ru, en, es
{{ lang_active().name }} - название языка: русский, english, español

Используйте функцию {{ lang_active(false) }}, которая вернет массив объектов.
Далее используйте цикл как это мы делали с функцией {{ getLangList() }} .
Все объекты lang возвращают 3 параметра: lang, name, isActive.

{{ getCountLang() }}
Пример использования
1725387090551.png
Вывод в браузере
1725387122175.png

Информации о сервере.
Функция {{ getServerAll() }} возвращает массив с экземплярами объектов serverModel
Расмотрим какие объекты мы можем использовать.
getId() - ID сервера (int)
getName() - Название сервера (string)
getRateExp() - Рейт EXP (int)
getRateSp() - Рейт SP (int)
getRateAdena() - Рейт Адены (int)
getrateDrop() - Рейт Дропа (int)
getRateSpoil() - Рейт Спойла (int)
getDateStartServer() - Дата старта сервера (string или если не установлено null)
getChronicle() - Версия игры (string)
getLauncherEnabled() - подключен ли к данному серверу SphereLauncher (bool).
getTimezone() - таймзона сервера (string).
getPage() - возвращает либо null (если не установлена страница описания сервера) либо объект
-> getPoster() - возвращает путь до изображения новости (string)
-> getLang() - язык новости (ru,en,es,pl...) (string)
-> getPageId - ID страницы (int)
-> getDateCreate() - дата создания новости (DateTime)
getStatus() - возвращает объект с следующими данными:
-> isDisabled() - был ли отключен сервер, сервер может быть отключен если нет доступа к его БД.
-> isEnable() - включен ли вывод статуса сервера (bool).
-> getOnline() - возвращает кол-во игроков в онлайне сейчас (int).
-> getLoginServer() - возвращает true / false доступен ли loginserver.
-> getGameServer() - возвращает true / false доступен ли gameserver.

Расмотрим примеры использования.
HTML:
{% for server in getServerAll() %}

   Мой сервер: {{ server.getName }}
   Версия игры {{ server.chronicle }} - x{{ server.rateExp }}
   Сервер: {% if server.getStatus().getGameServer() %} Online {% else %} Offline {% endif %}

   Онлайн: {{ server.getStatus().getOnline() }}
   Макс. онлайн: {{ server.getMaxOnline() }}
{% set MaxOnlinePr = min((server.getStatus().getOnline() / server.getMaxOnline() * 100), 100) %}
   Процент нагрузки: {{ MaxOnlinePr }}%

{% endfor %}
Результат
1725390254011.png

Как узнать используя шаблон, сколько серверов на сервере?
Помимо того что мы можем просто посчитать кол-во элементов массива getServerAll(), мы просто можем обратиться к функции {{ getServerCount() }}, которая вернет N серверов на сервере.



Cтатистика.
Для статистики имеется следующие функции statistic_get_pvp, statistic_get_pk, statistic_players_online_time, statistic_get_exp, statistic_get_clans, statistic_get_castle.
Расмотрим вывод статистики pvp.
HTML:
{% for player in statistic_get_pvp() %}
 {{player.player_name}} - {{player.pvp}}
{% endfor %}
1725390662666.png
Во первых тут выводится статистика сервера по умолчанию.
А если у несколько серверов?
Тогда первым аргументом функции statistic_get_pvp указывается ID сервера, список ID серверов можно получить из функции getServerAll().
Давайте рассмотрим такой вариант.
HTML:
{% for server in getServerAll() %}
  {% for player in statistic_get_pvp(server.getId(), 10) %}
    {{player.player_name}} - {{player.pvp}}
  {% endfor %}
{% endfor %}
Тут мы указали уже ID сервера и выведется статистика всех серверов.
Для примера второй аргумент выводит N людей из статистики, но не больше 10.

Может создать вопрос, а как узнать, какие есть параметры кроме player_name, pvp ?
Мы можем использовать функцию dump() для просмотра содержимого.
HTML:
  {% for player in statistic_get_pk(0, 1) %}
      {{dump(player)|raw}}
  {% endfor %}
Результат
1725391235731.png
{{ player.level }}, {{ player.class_id }} и т.д. вы можете использовать в данном цикле и выводить информацию из выше массива.
Чтоб вывести клановые эмблемы нужно воспользоваться функцией {{ clan_icon(player.alliance_crest) }} или {{ clan_icon(player.clan_crest) }} для вывода альянс значка или кланового.
Функция clan_icon сразу вернет элемент <img.../>
Код:
  {% for player in statistic_get_pk(0, 1) %}
    {{ clan_icon(player.clan_crest)|raw }}
  {% endfor %}
1725391581321.png
Фильтр raw отмечает значение как "безопасный", что означает, что в блокеэкранирования эта переменная будет выведена как не экранируема


Новости.
Вывод новостей через функцию last_news()
Функция возвращает массив с новостями, может принимать аргумент кол-во последних новостей, по умолчанию 10.
Способ применения.
HTML:
<section class="content__news news">
  {% for news in last_news() %}
<a href="{{getPageLink(news)}}" class="news__post post">
   <div
    class="post__img"
    style="background-image: url({{news_poster(news.poster)}});"
   ></div>
   <div class="post__date">{{news.date_create|date("d.m.Y")}}</div>
   <div class="post__title post__title_mb">{{news.name}}</div>
   <div class="post__content">{{news.description|raw}}</div>
  </a>
  {% endfor %}
</section>
В news будут следующие параметры
id - id новости.
name - название новости.
description - описание, будет обрезано до 300 символов.
date_create - дата создание новости.
poster - название изображения новости.
link - ссылка на другую страницу (к примеру форум).
Мы использовали функцию {{getPageLink(news)}} , которая вернет ссылку для перехода на другую страницу.
 

Назад
Сверху Снизу