<if> |  |
Как и любая программа, шаблон может содержать в себе условия.
Условия необходимы для проверки некоторых значений и вывода пользователю
некоторой части шаблона в зависимости от результатов проверки.
У тега <if> есть следующие атрибуты:
def
-
Текст, расположенный внутри этого тега, будет вставлен только при условии,
что переменная, имя которой передано значением атрибута def,
определена и в ней содержится не пустое значение.
Вы можете проверять любое количество переменных в одном условии.
Для того, чтобы проверить несколько разных переменных,
следует использовать атрибуты с именами
def1,
def2,
def3 и так далее.
Пробелы в нумерации не допустимы.
Например, атрибут
def10
будет проигнорирован, если не указан атрибут
def9.
empty
-
Текст, расположенный внутри этого тега, будет вставлен только при условии,
что переменная, имя которой передано значением атрибута empty,
не определена, или в ней содержится пустое значение.
Вы можете проверять любое количество переменных в одном условии.
Для того, чтобы проверить несколько разных переменных,
следует использовать атрибуты с именами
empty1,
empty2,
empty3 и так далее.
Пробелы в нумерации не допустимы.
Например, атрибут
empty10
будет проигнорирован, если не указан атрибут
empty9.
even
-
Если Вы находитесь внутри цикла, то условие с этим атрибутом позволяет
вставлять текст каждую вторую итерацию.
Если в качестве значения атрибута
even
указано значение "1", то текст будет вставляться каждую
чётную итерацию.
Если в качестве значения атрибута
even
указано значение "0", то текст будет вставляться каждую
нечётную итерацию.
Использование этого атрибута допустимо только внутри циклов.
Использование за пределами цикла приведёт к возникновению ошибки.
even2
-
Если Вы находитесь внутри цикла, то условие с этим атрибутом позволяет
вставлять текст каждые две итерации через две пропущенные.
Если в качестве значения атрибута
even2
указано значение "1", то текст будет вставляться каждую
чётную пару итераций.
Если в качестве значения атрибута
even2
указано значение "0", то текст будет вставляться каждую
нечётную пару итераций.
Использование этого атрибута допустимо только внутри циклов.
Использование за пределами цикла приведёт к возникновению ошибки.
first
-
Если Вы находитесь внутри цикла, то условие с этим атрибутом позволяет
проверить, находитесь ли Вы на самой первой итерации цикла.
Если в качестве значения атрибута
first
указано значение "1", то текст будет вставлен только для самой
первой итерации.
Если в качестве значения атрибута
first
указано значение "0", то текст будет на всех итерациях, кроме
первой.
Использование этого атрибута допустимо только внутри циклов.
Использование за пределами цикла приведёт к возникновению ошибки.
last
-
Если Вы находитесь внутри цикла, то условие с этим атрибутом позволяет
проверить, находитесь ли Вы на самой последней итерации цикла.
Если в качестве значения атрибута
last
указано значение "1", то текст будет вставлен только для самой
последней итерации.
Если в качестве значения атрибута
last
указано значение "0", то текст будет на всех итерациях, кроме
последней.
Использование этого атрибута допустимо только внутри циклов.
Использование за пределами цикла приведёт к возникновению ошибки.
Везде, где это возможно, лучше использовать проверку
при помощи атрибута first.
Проверка при помощи атрибута
last
выполняется несколько дольше.
К примеру, следующие два шаблона являются эквивалентными и выводят список,
разделяя элементы запятой:
<?html <foreach src="a">[s_title]<if last="0">, </if></foreach> ?>
<?html <foreach src="a"><if first="0">, </if>[s_title]</foreach> ?>
Для первого случая логика такая: «ставим запятые после всех элементов, кроме последнего».
Для второго: «ставим запятые перед всеми элементами, кроме первого».
noparam
-
Текст, расположенный внутри тега <if>,
будет вставлен только если параметр
с именем, заданным значением атрибута
privilege, не определён.
Имена параметров определяются тегом <param>
or
-
Определяет, каким способом будут соединяться все проверки, заданные
текущим тегом <if>.
Если этот атрибут задан и равен 1, то текст, расположенный внутри
тега <if> будет вставлен, если истинна хотя бы одна
любая проверка.
Если этот атрибут не задан, или его значение равно 0, то текст,
расположенный внутри тега <if> будет вставлен только
если истинны все проверки.
param
-
Текст, расположенные внутри тега <if>,
будет вставлен только если определён параметр
с именем, заданным значением атрибута
privilege.
Имена параметров определяются тегом <param>
privilege
-
Текст, расположенные внутри тега <if>,
будет вставлен только если пользователь
обладает привилегией,
имя которой задано значением атрибута
privilege.
В шаблонах проверка привилегий нужна для того, чтобы не выводить
некоторую информацию пользователям, которые не обладают некоторыми
привилегиями. Например, если пользователь не обладает привилегией
редактирования географических расположений, то ему не нужно показывать
ссылку на скрипт редактирования. Эта ссылка приведет его к странице с
сообщению об ошибке. Показывать пользователям неработающие ссылки не
является большой ошибкой с точки зрения защиты, однако может снизить
степень защиты.
В шаблонах проверки привилегий используются только для того, чтобы
указать, что нужно показать текущему пользователю. Проверки привилегий
всегда производятся непосредственно перед выполнением действий, требующих
определенных привилегий. Если пользователю, не обладающему, например,
привилегией, администратора CMS-сообщений показать ссылку на скрипты
редактирования CMS-сообщений, то у этого пользователя просто возникнет
неработающая ссылка.
privilege-child
-
Текст, расположенные внутри тега <if>,
будет вставлен только если пользователь
обладает привилегией,
имя которой задано значением атрибута
privilege-child или обладает
любой дочерней привилегией.
scope
-
Определяет область видимости переменных, на которые
стоит ссылка внутри этого условия.
Этот атрибут не является обязательным.
Если этот атрибут не указан, переменные берутся из области видимости по
умолчанию.
Для условий можно указывать ветку «иначе», текст в которой будет вставлен,
если само условие истинно. Ветка «иначе» задаётся тегом
<else />.
Для ветки «иначе» можно указать дополнительное условие, при котором содержимое
этой ветки будет вставлено в генерируемый html-документ. Для этого вместо
тега
<else />
следует использовать тег
<elseif />.
В качестве атрибутов тега
<elseif /> разрешены все те атрибуты, которые указываются
для тега
<if>.
Пример шаблона с использованием проверок условий:
<?html alert('<if privilege="geo.admin">Можно<elseif def="uid" />нельзя<else />введите логин</if>'); ?>
Если пользователь, который просматривает эту страницу, обладает привилегией
geo.admin, то результатом интерпретации этого шаблона будет
строка:
<?html alert('Можно'); ?>
Если пользователь не обладает такой привилегией, то будет произведена проверка
переменной uid. Если в этой переменной содержится непустое
значение, то результатом интерпретации всего этого шаблона будет строка:
<?html alert('нельзя'); ?>
Если же в этой переменной содержится пустое значение, то результатом интерпретации
будет строка:
<?html alert('введите логин'); ?>
Последняя модификация: 04.07.06 01:44 q Не проходите мимо! Оставьте Ваш комментарий в форуме! >>> Цитирование материалов моего сайта приветствуется! при условии видимой действующей! гиперссылки на мой сайт. [Ссылки] Если Вы нашли опечатку на этой странице, пожалуйста, выделите ее мышью и нажмите Ctrl+Enter. Сделаем язык чище! (c) Yuri Popoff, 2004 - 2008, popoff.donetsk.ua, style.donetsk.ua |
|