Директива (:if:) позволяет включать или выключать обработку части страницы.
Общая форма этой директивы такая:
(:if условие параметр:) текст (:ifend:)
где "условие" - это проверяемое условие (описано ниже), а "параметр" - это параметр или аргумент условия. Если условие "истинно"(TRUE), то текст будет включен, а если "ложно"(FALSE) - исключен из обработки страницы.
Встроеные условия включают:
(:if name ИМЯСТРАНИЦЫ:)
-
текущая страница называется "ИМЯСТРАНИЦЫ"
(:if group ИМЯГРУППЫ:)
-
текущая группа называется "ИМЯГРУППЫ"
(:if auth УРОВЕНЬ:)
-
пользователь имеет авторизационный "УРОВЕНЬ", где УРОВЕНЬ может быть: read, edit, upload, attr или admin
(:if authid:)
-
пользователь авторизован
(:if true:)
-
всегда включает обработку текста
(:if false:)
-
всегда выключает текст (тоже что и коментарий)
(:if attachments:)
-
у текущей страницы есть присоеденённые файлы
(:if date ДАТА:)
-
настоящая дата совпадает с ДАТА
(:if date ДАТА..:)
-
настоящая дата совпадает с ДАТА или позднее (неограничено)
(:if date ДАТА1..ДАТА2:)
-
нынешняя дата в диапазоне между ДАТА1 и ДАТА2 (включительно)
все даты в формате гггг-мм-чч или ггггммчч
(:if enabled VAR:)
-
PHP переменная VAR истинна (==true)
(:if equal СТРОКА1 СТРОКА2:)
-
СТРОКА1 совпадает с СТРОКА2
(:if match РЕГВЫР:)
-
имя текущей страницы подходит под регулярное выражение РЕГВЫР
(:if exists ИмяСтраницы:)
-
страница ИмяСтраницы существует
Также работают обратные формы условий:
(:if !attachments:)
-
у страницы нет добавленых файлов
(:if ! name ИмяСтраницы:)
текущая страница не называется "ИмяСтраницы"
(:if name -ИмяСтраницы :)
(:if name !ИмяСтраницы :)
Любая директива (:if:) автоматически прерывает предыдущую, так что можно легко сделать выбор варианта(без вложености):
Знак звезда (*) - это обощение обозначающее любую последовательность символов, в том числе и пусто, которая может быть расположена на его месте. А знак вопроса (?) - это обобщение обозначающее любой символ на его месте.
Символы обобщения (* и ?) используются в условной разметке:
(:if name PmCal.2005* :)
-
текущая страница принадлежит группе PmCal и её имя начинается с 2005
(:if group PmWiki* :)
-
имя группы страницы начинается с PmWiki
(:if name Profiles.*,-Profiles.Profiles :)
-
страница в группе Profiles, но не Profiles.Profiles
Смешаные условия
Условия (определённые ранее) можно комбинировать в более сложные выражения. Для этого используется одна из трёх эквивалентных форм:
(:if expr ВЫРАЖЕНИЕ :)
(:if [ ВЫРАЖЕНИЕ ] :)
(:if ( ВЫРАЖЕНИЕ ) :)
Условия комбинируются в выражения с помощью двоичных операторов и скобок. В следующей таблице, буквами А и Б обозначаются условия или подвыражения взятые в скобки:
Выражение
Оператор
Результат "истинно"
А and Б
And
Если А и Б истинны
А or Б
Or
Если А или Б истинно
А xor Б
Xor
Если А и Б истинны, или А и Б ложны
! A
Not
Если А ложно
А && Б
And
Если А и Б истинны
А || Б
Or
Если А или Б истинно
Обратите внимание, что:
пробелы вокруг операторов и скобок обязательны;
При синтаксических ошибках или непарных скобках поведение условий непредсказуемо.
Отсюда запись:
(:if expr auth admin || auth attr || auth edit :)
[[Logout -> {$Name}?action=logout]]
(:if:)
предлагает logout ссылку только когда авторизация с правами больше, чем 'read'(просмотр).