6.2 Синтаксис Cover

Cover - синтаксис разметки, используется для подстановки данных в тексты, вычислений и преобразований данных. 

В основе лежат переменные, заключенные в фигурные скобки { и }, которые заменяются на реальные значения, например {uid} будет автоматически заменен на user_id инициатора активности, а {res.14.title} - название ресурса с ID равным 14.

Проще всего знакомиться с cover на примерах...

Примеры

{user.4803497.first_name} - это имя пользователя id4803497. Вы также можете использовать вместо first_name следующие поля:
city.title - город
country.title - страна,
last_name - фамилия,
photo_50 - аватарка квадратнаx 50x50px,
photo_100 - аватарка 100х100px,
sex - 1 женский, 2 мужской,
bdate - дата рождения,
online - онлайн прямо сейчас, site - сайт,
relation - семейное положение,
screen_name - адрес странички,
contacts - контактные данные,
is_closed - 1 если страничка закрыта

{rate.55.sum} - сумма всех баллов в рейтинге #55

{rate.55.items.1.count} - количество очков у пользователя ТОП-1 в рейтинге #55

{rate.55.items.1.uid} - ID пользователя ТОП-1 в рейтинге #55. Переменные, возвращающие UID можно вкладывать в другие переменные:

{user.{rate.55.items.1.uid}.first_name} - имя пользователя ТОП-1 в рейтинге #55

{user.{rate.55.items.1.uid}|full_name} - имя и фамилия одной строкой этого пользователя. Обратите внимание на вертикальную черту перед full_name - это модификатор, склеивающий имя с фамилией через пробел, о них пойдёт речь ниже.

{rate.55.users.4803497.place} - место в рейтинге #55 пользователя id4803497

{rate.55.users.4803497.rank} - звание пользователя в рейтинге

{rate.55.users.4803497.count} - количество баллов рейтинге #55 у пользователя id4803497

{list.10.count} - количество пользователей в списке #10

{list.10.items.2.uid} - UID второго пользователя в списке

{list.10.items.2.time} - время добавления второго пользователя в списке

{list.10.items.-1.uid} - первый с конца пользователь в списке (последний добавившийся)

{res.14.title} - название ресурса #14

{res.14.desc} - описание ресурса #14

{res.14.icon} - относительный путь к изображению ресурса

{res.14.users.4803497.count} - количество ресурса #14 у пользователя id4803497

{res.18.users.4803497.val} - текстовое значение ресурса #18 у пользователя id4803497. count приводит значения ресурса к числу, а val выдаёт их в чистом виде.

{user.{uid}|full_name} - полное имя текущего юзера (обратите внимание на значок вертикальной черты)

{user.{uid}|name_case:acc} - имя текущего юзера в винительном падеже. Возможные значения: именительный – nom, родительный – gen, дательный – dat, винительный – acc, творительный – ins, предложный – abl. По умолчанию nom.

{user.{uid}.photo_100} - фото текущего юзера 100x100

{user.{res.14.users.{uid}.count}.photo_100} - фото пользователя 100x100, ID которого является значением ресурса #14 у текущего пользователя

{user.{uid}.photo_100}|circle - сделать аватарку круглой

{user.{uid}.photo_100}|circle:5 - скруглить края аватарки на 5 пикселей

{res.14.users.{uid}.count} == 10 - (для условий) количество ресурса #14 для текущего пользователя равно 10

{res.14.users.{uid}.count} + 20|calc - (для координат X и Y), прибавить 20 к количеству ресурса #14 у текущего юзера. calc - модификатор, который посчитает строку 10 + 20 как выражение равное 30.

{storage.52.data.image_base} - текстовое значение поля image_base из хранилища #52

{storage.52.data.log|list} - вывести в столбик текстовые строчки из массива log в хранилище #52

{storage.52.data.log|reverse|slice:1:16|list} - перевернуть массив лог, выбрать из него первые 16 позиций (на самом деле они последние, массив же перевёрнут) и разместить в столбик.

({res.14.users.{uid}.count} > 10) && ({res.14.users.{uid}.count} < 20) - (для условий), покажет спрайт, если количество ресурса #14 у текущего пользователя больше 10 и меньше 20

{storage.52.data.1.text} - первая текстовая строка из хранилища #52 с массивом строк

{storage.52.data.{|rand:1:3}.text} - случайный выбор одной из первых 4-х строк (отсчёт начинается с единицы) из из хранилища #52 с массивом строк

{server.1.task.0} - текущее значение задач, находящихся в очереди на выполнение на сервере номер 1

{server.1.load.0} - текущее значение загрузки процессора (Load Average) сервера номер 1, полезно для отслеживания перегрузки сервера и принятия соответствующих мер.

Модификаторы

В примерах выше - вы можете заметить, что некоторые конструкции используют вертикальную черту. Она означает применение модификатора к тому, что находится перед ним. Например

{user.{uid}.first_name|str_upper} - имя текущего пользователя будет преобразовано в ВЕРХНИЙ регистр.

Или даже несколько модификаторов сразу
{user.{uid}|name_case:acc|str_upper} - имя текущего пользователя в винительном падеже и в верхнем регистре. "acc" здесь - параметр модификатора, пишется пишется через двоеточие с именем модификатора. Обратите внимание, он работает не со строкой first_name, а со всем массивом данных пользователя {user.{uid}}

Вы можете использовать следующие модификаторы:

Числовые и математические

rand:a:b - случайное число от a до b

int - преобразование в целое число.

sqrt - квадратный корень

pow:2 - возвести в степень 2 (в квадрат)

number_format - расставить разделители разрядов в числе, 2000000 станет 2 000 000

ceil - округление в большую сторону

floor - округление в меньшую сторону

round:a - округление по математическим правилам, a - количество знаков после запятой

Строковые

str_lower - в нижний регистр

str_upper - в верхний регистр

urlenc - кодирование строки для передачи по ссылке

cut:a - обрезка по символам длинного текста (более 20 символов), где a - желательное количество символов. Обратите внимание, что алгорит сам выбирает границу обрезки так, чтобы она пришлась на пробелы между словами.

substr:a:b - выбор подстроки (тоже можно использовать как обрезку длинной строки), a - стартовая позиция в строке, начиная с 0, b - длина подстроки в символах.

str_pad:len:str - дополнить строку слева до заданной длины, например, чтобы красиво показать значения разной длины в столбик. len - длина, str - чем дополнить.

Время и дата

date:a - преобразование даты в формате timestamp в понятный формат, вид будет зависеть от a:
0 - 2020-01-01 12:00:01,
1 - 01.01.20 (только дата),
2 - 12:00 (только время),
3 - 1 января 12:00,
4 - 1 января,
5 - 1 января 12:00,
6 - 1 января 2020 12:00,
7 - 1 января 2020 в 12:00
8 - Понедельник (день недели)
9 - Число (день)
(если нужны ещё форматы - напишите в техподдержку)

strtotime - преобразовать дату из строк вида Y-m-d или d.m.Y в timestamp

Массивы

last - последний элемент массива. Применяется, разумеется, к массиву.

list - элементы одномерного массива в список, разделённый переносами строк

arrval:name - превратить двухмерный массив в одномерный (например для list), взяв в качестве значения поле с именем name.

count - количество элементов массива

slice:0:5 - взять часть массива, пять элементов, начиная с нулевого элемента

reverse - перевернуть массив

get_rand - выбрать случайный элемент массива

Прочие

full_name - полное имя пользователя. Модификатор применяется к массиву данных пользователя, из-за чего его иногда путают с ".first_name".

name_case:acc - имя текущего юзера в винительном падеже. Возможные значения: именительный – nom, родительный – gen, дательный – dat, винительный – acc, творительный – ins, предложный – abl. По умолчанию nom.

calc - посчитать выражение. Например прибавить 100 к значению ресурса можно вот так: {res.14.users.{uid}.count} + 100|calc Это может быть полезно, если вы хотите задать координату положения спрайта на картинке в зависимости от значения ресурса (чем больше очков - тем дальше уехала машинка и т.д.)

json - преобразовать массив в json-кодированную строку. Метод устарел, потому что cover в любом случае будет выполнять это преобразование, если вы пытаетесь вывести через переменную массив.

json_decode - обратное преобразование json-строки в массив. Полезно, когда например, нужно разобрать в переменные ответ какого-либо внешнего API.

25|progress:100:X:O:10 - нарисовать прогресс-бар символами X и O, длиной в 10 символов, где 25 (тут может быть переменная) - значение показателя, а 100 (тоже может быть переменная) - максимальное значение.