Директивы, используемые «Site-UP ready» веб-сайтом, позволяют производить манипуляции с переменными, файлами, программными модулями, исполняемыми файлами и командами. Каждая из директив, описанных ниже, должна быть заключена в угловые <%директива%> или квадратные [] скобки. Знаки процента (%) являются обязательными в обоих случаях.
Использование угловых скобок позволяет "прятать" директивы «Site-UP ready» веб-сайта в случае если страница просматривается не под управлением «Site-UP ready» веб-сайта, однако имейте ввиду, что если Вы будете редактировать в WYSIWYG редакторе (не только встроенным в Site-UP, но и в любом другом) документ содержащий директивы с угловыми скобками, то они также будут спрятаны. Поэтому используйте угловые скобки только если это действительно необходимо.
В качестве примеров в данной документации мы будем использовать угловые скобки, чтобы избежать ложного срабатывания директив (при сохранении из WYSIWYG редактора символы < и > заменяются соответственно на < и > что и не позволяет директивам срабатывать).
Директива позволяет установить значение переменной (от англ. set - установить). В качестве стандартных переменных, к примеру, используются переменные SITEUPSKIN, TITLE, DESCRIPTION и KEYWORDS, определяющих HTML шаблон (шкурку или интерфейс страницы или веб-сайта), название, описание и ключевые слова запрошенной страницы. После установки значения переменной она становится доступной для использования в других директивах. «Site-UP ready» веб-сайт сначала анализирует запрошенный файл на предмет наличия в нем директив. Найденные директивы обрабатываются и выполняются. После этого анализируется HTML шаблон страницы, в который вставляется запрошенный файл. По этой причине если установить значение переменной, например, в шаблоне страницы, а потом попытаться использовать значение этой переменной в теле запрошенного файла, то результат не оправдает ожидания - значение переменной будет не определено.
Пример:
По умолчанию используется один интерфейс для всех страниц сайта. Однако если Вы хотите для некоторых из страниц использовать другой шаблон (например для всплывающих окон), то его можно переопределить изменив значение переменной SITEUPSKIN: <%SET:SITEUPSKIN=popup.html%>
Директива позволяет добавить значение к указанной переменной (от англ. add - добавлять). Изменяемая переменная и добавляемое значение рассматриваются как строковые переменные (происходит конкатенация строковых переменных)
Пример:
Выполнение директив <%SET:var=Hello%> и <%ADD:var= world!%> приведет к тому что значение переменной var будет: Hello world!.
Директива позволяет вставить значение переменной в месте использования директивы (от англ. insert - вставить). Именно используя директиву INS, «Site-UP ready» веб-сайт определяет название, описание и ключевые слова каждой из страниц. «Site-UP ready» веб-сайт использует еще одну зарезирвированную переменную: CONTENT_FILE. Именно эта переменная содержит запрошенный веб-браузером и проанализированный файл. Вообще говоря, для того чтобы создать свой веб-сайт достаточно создать HTML шаблон для страниц веб-сайта и в месте размешения основных информационных материалов поместить директиву:
<%INS:CONTENT_FILE%>. Этого вполне достаточно. Далее, в шаблоне страниц, можно использовать <%INS:TITLE%>, <%INS:DESCRIPTION%> и
<%INS:KEYWORDS%> для вставки названий, описаний и ключевых слов страниц. Для полноценного сайта нам не хватает хотя бы одного сквозного (одинакового для всех страниц) меню навигации. Конечно его можно создать в HTML шаблоне страниц, но лучше разместить в отдельном файле и воспользоваться директивой INC.
Пример:
На Вашем сайте Вы продаете компакт диск. Его стоимость для зарегистрированных пользователей Вашего сайта составляет 150 рублей, а для всех других 200 рублей. Используя директиву SET, Вы устанавливаете значения для двух переменных: <%SET:price1=150 рублей%> и <%SET:price2=200 рублей%>. Используя директиву INS Вы вставляете значения перменных price1 и price2 везде где это необходимо (<%INS:price1%> и <%INS:price2%>). Теперь если цена компакт диска изменится, или вы захотите продавать его не в рублях, а в другой валюте, или добавить фразу "НДС не облагается" и т.д., то Вам достаточно сделать изменения в одном месте и эти изменения отобразятся везде, где эти переменные используются. Это самый простой пример использования директив SET и INS. На самом деле сфера их применения ограничивается лишь Вашими фантазиями.
Директива позволяет поместить значение переменной в месте использования директивы (от англ. put - помещать). В отличие от директивы INS результат не анализируется, а на месте ее использования вставляется исходный код значения переменной (со всеми возможными директивами и тегами).
Пример:
Сравните отличия в выполнении директив INS и PUT:
<p><%SET:var=<b>bold</b>%></p>
<p><%INS:var%></p>
<p><%PUT:var%></p>
Директива позволяет прочитать и вставить содержимое файла в месте использования директивы (от англ. include - заключать в себе, включать). Содержимое файла анализируется на предмет наличия в нем других директив, каждая из которых выполняется. Если перечислены параметры, то каждый из них получает порядковый номер начиная с нуля. Во вставляемом файле переданные параметры можно использовать воспользовавшись директивами: <%0%>, <%1%>, <%2%> и т.д.
Пример:
Допустим мы хотим создать сквозное меню для нашего веб-сайта. Для этого создадим файл с именем menu.html и разместим его в директории _html расположенной в корневой директории веб-сайта (назначения директорий будут описаны ниже). Далее в шаблоне страницы разместим директиву
<%INC:menu.html%>. В месте использования этой директивы будет находится содержимое файла menu.html. Все изменения, которые будут сделаны в этом файле будут мгновенно отображаться на всех страницах сайта.
Использование директивы INC полезно еще и потому, что, благодяря изменению процедуры поиска файла menu.html для различных разделов веб-сайта, можно создавать так называемые контекстно-зависимые меню. Это означает, что, в нашем примере, использование всего одной директивы
<%INC:menu.html%> и всего один раз позволяет вставлять разные файлы menu.html в зависимости от раздела веб-сайта. Но об этом ниже.
Эта директива (от англ. inline - встраивать) полностью аналогична директиве INC за тем исключением что содержимое файла не анализируется, а на месте ее использования вставляется исходный код файла (со всеми возможными директивами и тегами). По причине того что содержимое файла не анализируется, то эта директива не поддерживает передачу параметров, как это возможно с INC.
Директива позволяет подключить и выполнить Perl модуль (от англ. require - требовать). Для подключения модуля используется Perl функция require. Обычно при использовании require Perl не позволяет повторно загружать уже загруженные модули, однако «Site-UP ready» веб-сайт позволяет Вам делать это несколько раз, например с различными параметрами вызова. Передаваемые параметры помещаются в массив @_ до загрузки модуля. Результат выполнения модуля помещается в переменную $_. Результат выполнения помещается в месте использования директивы. Если результат выполнения модуля содержит директивы «Site-UP ready» веб-сайта, то они анализируются и выполняются. В своей работе модуль может использовать уже определенные переменные, процедуры и функции «Site-UP ready» веб-сайта, других модулей и плагинов.
Пример:
Необходимо реализовать процедуру расчета стоимости заказа компакт дисков в зависимости от стоимости одного диска, заказанного количества и персональной скидки. Используем: <%REQ:sum.pm|<%INS:price%>,<%INS:count%>,<%INS:discount%>%>, где price, count и discount - цена, количество дисков в заказе и скидка в процентах соответственно. Файл sum.pm создаем в директории _perl расположенной в корневой директории веб-сайта:
{
my ($price,$count,$discount)=@_;
my $sum = $price*$count*(1-$discount/100);
$_=$sum;
}
Панель управления «Site-UP ready» веб-сайтом и управление плагинами построены с использованием подключаемых модулей.
Директива позволяет запустить внешний файл или команду операционной системы (от англ. run - запуск). Результат выполнения команды вставляется в месте использования директивы. Если результат содержит директивы, то они анализируются и выполняются.
Директива позволяет выполнить внешний файл или команду операционной системы (от англ. execute - выполнять). Результат выполнения команды вставляется в месте использования директивы, но в отличие от директивы RUN результат не анализируется и отображается со всеми возможными директивами и тегами.
Пример:
Очень хороший пример дает использование команды DIR в операционных системах Windows. Сравните результаты выполнения следующих директив:
<pre><%RUN:dir%><pre>
<pre><%EXE:dir%><pre>
Директива позволяет загрузить любой документ с другого веб-сервера по протоколу HTTP. Результат выполнения команды вставляется в месте использования директивы. Если результат содержит директивы, то они анализируются и выполняются.
Директива позволяет загрузить любой документ с другого веб-сервера по протоколу HTTP (от англ. fetch - считывать). Результат выполнения команды вставляется в месте использования директивы. Содержимое файла не анализируется и отображается со всеми возможными директивами и тегами.
Вставляет значение переданного в директиве INC параметра.
Пример:
Директива: <%INC:formattext.html|Hello,world%>
Файл formattext.html: <%0%>, <b><%1%></b>!
Результат: Hello, world!
Заменяет в переданном параметре запятые на из HTML эквивалент и вставляет результат.
Вставляет значение переданного в директиве INC параметра. В отличие от директивы <%число%> вставляется исходный код параметра.
Пример:
Директива: <%INC:formattext.html|Hello,<b>world</b>%>
Файл formattext.html: <%{0}%>, <%{1}%>!
Результат: Hello, <b>world</b>!
В зависимости от значения 'условие' вставляет в месте использования директивы значение 'истина' или 'ложь'. Если 'условие' не равно нулю и не пустая строка, то на месте использования директивы будет вставлено значение 'истина', иначе - 'ложь'.
Возвращает 1 если переменная установлена или ноль если переменная не установлена или равноа нулю.
В зависимости от значения параметра 'число' вставляет в месте использования директивы значение 'блок1', 'блок2' и т.д. Если 'число' определено, то на месте использования директивы будет вставлено значение соответствующего блока (если число равно 1, то первого блока и т.д). Если параметр 'число' не является числом, равен нулю, пустая строка или его значение больше количества определенных блоков, то на месте использования директивы вставляется пустая строка.
Вычисляет значение выражения. Используется Perl функция eval. Позволяет встраивать фрагменты Perl программ в HTML код. В качестве простейшего примера эту директиву можно использовать для вычисления арифметических выражений: <%EVL:5+5%>, <%EVL:int(1.005)%> и т.п.
Вставляет в документ исходный код блока
Пример:
<%(
<h3>Hello!<h3>
<p><b>Good bye<b><p>
)%>
Результат:
<h3>Hello!<h3>
<p><b>Good bye<b><p>
Любую директиву можно закомментировать. Коментарии не анализируются, не выполняются, а просто удаляются из страниц.
Пример:
<%#SET:TITLE=Мой веб сайт%>
<%#INS:TITLE%>
<%#INC:menu.html%>
<%#EXE:dir%>
и т.п.
Директивы анализируются и выполняются по мере их появления в теле документов (сверху вниз). Вложенные директивы анализируются и выполняются от внутренних директив к внешним.
Пример:
<%SET:menu=
<%INC:menu.html%>
%>
<p><%INS:menu%><p>
<pre><%PUT:menu%></pre>
Сначала происходит анализ директивы <%INC:menu.html%> (это внутренняя директива в конструкции). Затем результат выполнения этой директивы (содержимое файла menu.html) присваивается переменной menu. Последующие две директивы выводят на страницу значение переменной menu.