Заголовок подсказки

Текст подсказки

Лицевой счет
0.00 у.е. пополнить
Дата создания сайта
19.03.2013
Язык панели управления
Русский
Мои сайты (полный список)
Еще 9Создать сайт

Создать сайт

 
Выйти из ПУ

Общее

Таблица стилей (CSS)

CSS

Условные операторы

Шаблоны системы имеют свой собственный простой язык разметки, который некоторыми своими элементами подобен языку программирования PHP.

Этот язык позволяет выводить (обрабатывать) или не выводить (не обрабатывать) участки шаблона в зависимости от истинности или ложности различных условий, применяемых к значениям специальных переменных (таких как 0), а также проводить вычисления над этими переменными. Переменные шаблонов имеют вид , где VARNAME может содержать только прописные латинские буквы, цифры и символ подчеркивания. Каждый вид шаблона имеет свой набор переменных, которые доступны для использования в нем.

Язык шаблонов позволяет выполнять 3 основных действия:

  1. Выводить значение переменной путем простого ее указания в любом месте шаблона (даже внутри HTML-тегов).

    Пример

    Адрес <a href="http://delaytesami.com/">главной страницы</a> моего сайта

    Выведет (для http://delaytesami.com/ равной 'http://mysite.com'):

    Адрес <a href="http://mysite.com">главной страницы</a> моего сайта

    Неопределенная переменная считается пустой.

  2. Выводить результат вычисления выражения, заключенного в специальные скобки <? и ?>. Выражение может содержать математические операции, операции сравнения, вызовы функций.

    Пример

    3 плюс 2 равно <? 3+2 ?>

    Выведет:

    3 плюс 2 равно 5

    Пример

    Через 10 лет будет <? 2017+10 ?> год

    Выведет (для 2017 равного 2010):

    Через 10 лет будет 2020 год

    Пример

    Ваш логин начинается на букву "<? substr(Гость,0,1) ?>"

    Выведет (для Гость равного 'Admin'):

    Ваш логин начинается на букву "A"

    Полный список всех возможных операций и функций, а также правила вычисления выражений смотрите ниже.

  3. Реализовывать условную обработку с помощью условных операторов <?if()?> и <?ifnot()?>.

    Синтаксис условных блоков следующий:

    <?if(выражение)?>истинный_код<?else?>ложный_код<?endif?>

    <?ifnot(выражение)?>истинный_код<?else?>ложный_код<?endif?>

    • выражение - математическое или логическое выражение, которое вычисляется с целью определения его истинности (для блока <?if()?>) или ложности (для блока <?ifnot()?>). Правила вычисления выражений смотрите ниже.
    • истинный_код – код шаблона, который будет обработан в случае выполнения условия, заданного условным оператором.
    • ложный_код – код шаблона, который будет обработан в случае невыполнения условия, заданного условным оператором (может полностью отсутствовать вместе с оператором <?else?>, если необходима только проверка на истинность).

    Условные блоки могут быть вложенными. Допускается до 10 уровней вложения.

    Пример

    Вы <?if()?>зашли как "Гость"<?else?>не выполнили вход<?endif?>

    Выведет (для Гость равного 'Admin'):

    Вы зашли как "Admin", если истинна, или иначе Вы не выполнили вход.

    Пример

    <?if(Гость='Hacker' or Гость='bad_boy' or substr(Гость,0,4)='anti')?>Попался, Гость!!!<?endif?>

    Выведет (подставив значение Гость):

    Попался, Гость!!!

    если Гость совпадает с 'Hacker' или 'bad_boy', или начинается на 'anti'.

    Пример

    <?if(>50)?>***<?else?><?if(>10.0)?>**<?else?>*<?endif?><?endif?>

    Выведет ' *** ', если больше 50, ' ** ', если больше 10 и меньше-равно 50, и ' * ', если меньше-равно 10.

    <?if( % 2 = 1)?>нечетное<?else?>четное<?endif?>

    Выведет, является ли число в четным или нечетным.

Вычисление выражений

Различаются 3 типа операндов: строковые (задают текст), целочисленные (задают целое число от -9223372036854775808 до 9223372036854775807), дробные (задают дробное число).

  • Строковые операнды задаются в виде переменных шаблона (Гость) или констант в одинарных ('Константа1') или двойных кавычках ("Константа2"). При необходимости использовать выбранный символ кавычки внутри самой константы его можно экранировать с помощью обратного слеша ('It\'s all right' будет прочитана как "It's all right"). Сам обратный слеш также можно экранировать ("большой\\маленький" будет прочитана как "большой\маленький"). Перед всеми остальными символами обратный слеш не имеет экранирующего эффекта и выводится вместе с последующим символом.

    Внутри строковых констант не допускается наличие закрывающей скобки выражения ?>, т.к. она будет воспринята как признак окончания выражения.

  • Целочисленные операнды могут быть заданы в десятичной, двоичной, восьмеричной или шестнадцатеричной системе счисления. Десятичные константы задаются как последовательность цифр от 0 до 9 (123, 999999, 3).

    Двоичные константы начинаются с префикса "0b" (или "0B"), за которым следует последовательность цифр 0 и 1 (0b1000 задает число 8, 0B11111111 задает число 255).

    Восьмеричные константы начинаются с префикса "0o" (или "0O"), за которым следуют цифры от 0 до 7 (0o200 задает число 128, 0o456 задает число 302).

    Шестнадцатеричные константы начинаются с префикса "0x" (или "0X"), за которым следуют цифры от 0 до 9 и латинские буквы от A до F без учета регистра (0x10A задает число 266, 0Xffff задает число 65535).

  • Дробные операнды задаются как последовательность цифр от 0 до 9, в которой обязательно присутствует десятичная точка (123.56) или латинская буква E, отделяющая десятичный порядок (1.234e6 задает число 1234000, 1e3 задает число 1000, 2e-4 задает число 0.0002), или значение числа выходит за допустимый диапазон для целочисленных операндов.

Все описанные ниже операторы, кроме оговоренных отдельно, автоматически преобразуют свои операнды к нужному типу (выражение <?"5" + 3?> возвратит 8). При преобразовании строкового значения в числовое используются правила из пункта 4 (т.е. результат всегда будет считаться дробным, а альтернативные системы счисления не распознаются) и дополнительно распознается знак минус (-) перед числом.

Преобразование строки в число останавливается на первом недопустимом символе, начальные пробелы игнорируются. Целочисленные операнды преобразуются в строку без потери точности и без использования десятичных дробей (<? 1234567890123445678 ?> выведет '1234567890123445678'). Дробные операнды преобразуются в строку в формате с плавающей запятой с точностью до 15 разрядов (<? 1234567890123445678.0 ?> выведет '1.23456789012346e+17').

Выражения вычисляются с учетом приоритетов операций. Приоритетом можно управлять с помощью круглых скобок (выражение <?2 * (5 + 3)?> возвратит 16).

При отсутствии скобок приоритет операторов определяется следующей таблицей (в порядке уменьшения приоритета):

унарный +, унарный -, ~, not, !, все функции
**
*, /, %
+, -
=, ==, !=, <=, <, >=, >
&
|, ^
&&, and
||, or

Выражение считается ложным, если результат его вычисления представляет собой пустую строку, строку '0' (т.е. строку с единственной цифрой 0, а строки '4', 'Hello', '00' или '0.0' считаются истинными), целочисленное значение 0 или дробное значение 0.0. Все прочие значение считаются истинными.

Арифметические операторы

+, -, *Бинарное арифметическое сложение, вычитание и умножение соответственно. Если оба операнда целочисленные, то результат также будет целочисленным (не должен выйти за диапазон целочисленных значений).
унарный +, унарный -Эквивалентно сложению с нулем и вычитанию из нуля соответственно, но имеет высокий приоритет.
/Арифметическое деление. Результат всегда дробный.
%Остаток от деления. Операнды приводятся к целым числам. Результат всегда целочисленный.
**Бинарная операция возведения в степень. Первый операнд (должен быть положительным) возводится в степень второго. Результат всегда дробный.

Операторы сравнения

=, ==Проверка равенства. Если оба операнда строковые, то проводится сравнение строк с учетом регистра (строчные и прописные буквы различаются). Если оба операнда целочисленные, то сравниваются целые числа. В противном случае операнды сравниваются как дробные числа. Результат оператора - целое число 1, если операнды равны, и 0, если не равны. Примеры:<?if("1.000"="1.0")?> ложно (сравниваются как строки), <?if("1.000"="1.0"+0)?> истинно (сравниваются числа).
!=Проверка неравенства. Аналогичен проверке равенства, но результат противоположный.
<=, <, >=, >Сравнение двух чисел. Если оба операнда целочисленные, то сравниваются целые числа. В противном случае операнды сравниваются как дробные числа. Результат оператора - целое число 1, если выполняется условие оператора, и 0, если не выполняется.

Логические операторы

!, notУнарный оператор логического отрицания. Если операнд ложный, то результатом является целое число 1, иначе 0.
&&, andБинарный оператор логического "И" (умножения). Если оба операнда истинны, то результатом является целое число 1, иначе 0.
||, orБинарный оператор логического "Или" (сложения). Если любой из операндов истинен, то результатом является целое число 1, иначе 0.

Побитовые операторы

Всегда приводят операнды к целому числу и возвращают целочисленный результат

&, |, ^Бинарные операторы побитового "И" (умножения), "Или" (сложения) и "Исключающее Или" соответственно.
~Унарный оператор побитового отрицания (инверсии).

Функции

int N
int(N)
Возвращает целую часть числового параметра N, полученную округлением в сторону нуля. Результат всегда целочисленный.
abs N
abs(N)
Возвращает абсолютное значение (модуль) числового параметра N. Если операнд целочисленный, то результат также будет целочисленным. Иначе дробным.
rnd( )
rnd N
rnd(N)
Возвращает случайное число. Если параметр отсутствует или равен 0, то возвращается дробное число от 0 включительно до 1 не включительно. Если параметр целочисленный (не равный 0), то возвращается целое число от 0 до N-1 включительно при N>0, и число от N+1 до 0 включительно при N<0. Иначе параметр приводится к дробному числу и умножается на случайное дробное число от 0 включительно до 1 не включительно.
Пример

<? rnd 10 ?>, вернет целое число от 0 до 9 включительно,

<? rnd 10.0 ?>, вернет дробное число от 0 до 10 не включительно.

min(A1,A2,...,An)
max(A1,A2,...,An)
Возвращает соответственно минимальное или максимальное значение среди переданных числовых параметров. Результат всегда дробный.
len S
len(S)
Возвращает длину строкового параметра. Результат всегда целочисленный.
strpos(S1,S2)Ищет первое вхождение строки S2 в строку S1, проходя от начала S1 к концу. Сравнение производится с учетом регистра. Оба параметра должны быть заданы как строки (или как результат вызова функции, возвращающей строку). Поиск ограничен первыми 1000 символами строки S1. Сравнение ограничено первыми 100 символами строки S2. Возвращает целое число - позицию строки S2 от начала S1, считая от 0. Если вхождение не найдено, возвращает -1. (<?strpos('Васяся','ся')?> возвратит 2).
strrpos(S1,S2)

Аналогична strpos, но ищет последнее вхождение S2. Поиск ограничен последними 1000 символами строки S1. (<?strrpos('Васяся','ся')?> возвратит 4).

substr(S,N1,N2)
substr(S,N1)

Возвращает подстроку из строки S, начиная с позиции N1 (первый символ имеет позицию 0), длиной N2 символов.

Параметр S должен быть задан как строка (или как результат вызова функции, возвращающей строку). N1 и N2 приводятся к целым значениям. Если N2 не указан, то возвращается подстрока с позиции N1 до конца строки S. Если N1 отрицателен, то начальная позиция отсчитывается от конца строки S. Если N2 отрицателен, то задает конечную позицию от конца строки S.

Пример

<?substr('Привет',2)?> возвратит 'ивет',

<?substr('Привет',2,2)?> возвратит 'ив',

<?substr('Привет',-2)?> возвратит 'ет',

<?substr('Привет',0,-2)?> возвратит 'Прив').

Использовано 50.0 Mb из 400 Mb

Тип

Название

Размер, Kb

Дата

Are you sure?
Хостинг от uCoz