Инструменты пользователя

Инструменты сайта


constructor:all_modules

Общие особенности всех модулей

Свойства модуля

Установка свойств модуля не требует каких-то специальных навыков или раздумий. Единственное что требуется, это выбрать одно из возможных значений для каждого свойства. В руководстве администратора описан процесс настройки свойств модуля, и он не должен вызвать больших затруднений.

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

Свойства модуля к странице

Некоторые модули могут прописывать свойства к каждой странице сайта. Задание значений этих свойств так же не должно вызывать затруднений. Как и в случае со свойствами модуля, значения свойств модуля к странице наследуются от родительской страницы, и вам достаточно задать значения по умолчанию у главной страницы сайта, и только в случае необходимости менять эти значения уже у конкретных страниц.

Шаблоны модулей

Любой модуль использует для своей работы шаблоны, которые определяют то, как будет выведен контент, обрабатываемый конкретным модулем. Файлы шаблонов модуля расположены в каталоге модуля в папке «templates_user». Файлы шаблонов должны иметь расширение «html» или «htm».

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

Блоки

Рассмотрим понятие блока сразу на примере. Допустим, есть модуль, отвечающий за ведение базы данных участников группы вечерних занятий. Данный модуль имеет административный интерфейс, где для каждого участника указываются следующие значения:

  • Имя
  • Фамилия
  • Дата рождения
  • Количество посещений

На страницах сайта данный модуль должен представить свой контент в табличном виде, что бы участники занятий смогли контролировать своё посещение. Для того, что бы отобразить такой контент, необходимо вывести заголовок таблицы (блок начала), затем какое-то количество строк (блок строки) и подвал (блок окончания) (Рис. 1).

Рис. 1: Схема обработки блоков и построения из них результирующего контента по данным, обрабатываем модулем.
Рис. 1: Схема обработки блоков и построения из них
результирующего контента по данным, обрабатываем модулем.

Блоки как раз и определяют то, как будет выглядеть каждая из этих трёх частей. На Рис. 1 представлена схема того, как из блоков модуля будет формироваться итоговая таблица с контентом. Пунктирной линией здесь показан тот результирующий контент, который будет сформирован модулем после обработки данных и вывода их с помощью такого шаблона. Это достаточно простой пример, однако он наглядно демонстрирует, для чего нужны блоки.

Как вы наверное уже догадались, внутри блока будет содержаться HTML код оформляющий данный контент. В нашем случае в «блоке начала» будут теги открывающие таблицу, а в «блоке окончания» будут теги, закрывающие таблицу. Ну и в «блок строки» будет содержать тэги начала и конца строки.

Следует особо отметить, что вы можете управлять только содержимым блоков. Количество блоков и порядок их обработки (соединения) заложен в модуль и не может быть изменён средствами SantaFox™.

Синтаксис блоков

Объявление блока имеет следующий синтаксис:

01.  	<!-- @<имя блока> -->
02.  	<тело блока>

Концом блока служит начало заголовка следующего блока или конец файла шаблона. Не смотря на то, что блоки строго определены модулем, вы можете создавать собственные блоки с тем, что бы отделить создать «невидимые блоки», то есть те, которые не попадут в результирующий контент. Для нашего примера, синтаксис блоков будет следующим:

01.  	<!-- @begin -->
02.  	<table border="0">
03.  	    <tr>
04.  	        <th>№</th>
05.  	        <th>ФИО</th>
06.  	        <th>Дата рождения</th>
07.  	        <th>Кол-во занятий</th>
08.  	    </tr>
09.  	<!-- @string -->
10.  	    <tr>
11.  	        <td></td>
12.  	        <td></td>
13.  	        <td></td>
14.  	    </tr>
15.  	<!-- @end -->
16.  	</table>

Переменная

Теперь должен возникнуть закономерный вопрос. Ведь блок, используемый для вывода строк должен выводить разные строки, то есть строки с разными данными, но при этом, форматирование строк остаётся неизменным. Здесь и выходят на сцену переменные, которые заменяются теми или иными значениями. В нашем случае, модуль будет использовать четыре переменные:

  • порядковый номер строки (number);
  • имя (fname);
  • фамилия (lname);
  • дата рождения (bdate);
  • кол-во занятий (cemployment).

Возвращаясь к нашему примеру и Рисунку 1, мы можем сказать, что каждый раз, при обработке «блока строки», переменные, используемые в этом блоке, будут заменены на значения, соответствующие обрабатываемой в данный момент записи базы данных модуля.

Следует отметить, что каждый блок имеет свой определённый набор переменных, которые заменяются определёнными значениями. Вы может по-разному комбинировать имеющиеся в блоке переменные, но не добавлять новые переменные.

Синтаксис переменных

Переменная имеет достаточно просто синтаксис:

01.  	%<имя переменной>%
Если вернуться к нашему примеру, то итоговый файл шаблона будет выглядеть следующим образом:
01.  	<!-- @begin -->
02.  	<table border="0">
03.  	    <tr>
04.  	        <th>№</th>
05.  	        <th>ФИО</th>
06.  	        <th>Дата рождения</th>
07.  	        <th>Кол-во занятий</th>
08.  	    </tr>
09.  	<!-- @string -->
10.  	    <tr>
11.  	        <td>%number%</td>
12.  	        <td>%fname%, %lname%</td>
13.  	        <td>%bdate%</td>
14.  	        <td>%cemployment%</td>
15.  	    </tr>
16.  	<!-- @end -->
17.  	</table>

Содержимое переменных

Рассмотренный нами пример является достаточно простым и в нём все значения переменных заменяются простыми строками, которые подставляются непосредственно в результирующий контент.

В более сложных модуля значениями переменных могут быть ссылки, которые необходимо помещать в свойства «HREF» тега «<A>», или же ещё более сложными конструкциями. В любом случае, в описании модуля всегда указан весь перечень используемых переменных, а также те значения, которые могут быть возвращены переменной. Кроме того, в сложных модулях значения переменной может быть взято из того или иного блока, в соответствии с каким то условием.

Для того, что бы наглядно продемонстрировать это, немного усложним наш модуль. Добавим ещё одно поле, которое администратор может указать у участника занятий, а именно – фотографию участника. Тогда шаблон модуля примет следующий вид:

01.  	<!-- @begin -->
02.  	<table border="0">
03.  	    <tr>
04.  	        <th>№</th>
05.  	        <th>Фото</th>
06.  	        <th>ФИО</th>
07.  	        <th>Дата рождения</th>
08.  	        <th>Кол-во занятий</th>
09.  	    </tr>
10.  	<!-- @string -->
11.  	    <tr>
12.  	        <td>%number%</td>
13.  	        <td><img src="%foto%" width="75" height="100" border="0" /></td>
14.  	        <td>%fname%, %lname%</td>
15.  	        <td>%bdate%</td>
16.  	        <td>%cemployment%</td>
17.  	    </tr>
18.  	<!-- @end -->
19.  	</table>

Как видите, мы добавили ещё одну колонку в шаблон для новой переменной «foto», данная переменная будет заменена ссылкой на файл изображения и потому, она вставлена непосредственно в свойство «SRC» тэга «IMG».

Однако, если у кого-то из участников не окажется фотографии, то в этой строке картинка не будет отображена, так как свойство «SRC» тэга «IMG» будет пустым. Для того что бы избежать такого поворота событий модуль должен по другому обрабатывать переменную «foto» и добавить два новых блока.

01.  	<!-- @begin -->
02.  	<table border="0">
03.  	    <tr>
04.  	        <th>№</th>
05.  	        <th>Фото</th>
06.  	        <th>ФИО</th>
07.  	        <th>Дата рождения</th>
08.  	        <th>Кол-во занятий</th>
09.  	    </tr>
10.  	<!-- @string -->
11.  	    <tr>
12.  	        <td>%number%</td>
13.  	        <td>%foto%</td>
14.  	        <td>%fname%, %lname%</td>
15.  	        <td>%bdate%</td>
16.  	        <td>%cemployment%</td>
17.  	    </tr>

18.  	<!-- @end -->
19.  	</table>
20.  	<!-- @foto -->
21.  	<img src="%foto%" width="75" height="100" border="0" />
22.  	<!-- @no_foto -->
23.  	<img src="/images/person-no.jpg" width="75" height="100" border="0" />
24.  	

Теперь, в качестве значения переменной «foto» будет выступать контент блока «foto» или блока «no_foto», в зависимости от того, есть у данной строчки записи базы данных модуля фотография или нет.

Таким образом, образом мы можем выделить «прямые переменные», которые сразу заменяются значениями и «переменные-блоки», значения которых заменяются другими блоками. В дальнейшем, для удобства, при описании блоков и переменных мы будем разделять два этих типа переменных.

Блок уровня

В некоторых модулях могут быть использованы уровни блоков. Особенно актуально это для модуля «Меню», «Дороги» и «Карты сайта», во всех тех модулях, где работа идёт со иерархически структурированными данными (в данном случае мы говорим о структуре сайта, но это могут быть и любые другие данные, к примеру, структура интернет-магазиан).

Отображения таких данных требует того, что бы одни и те же блоки, но выводимые для разных уровней, выглядели по-разному. Для того, что бы показать, что блок имеет несколько уровней необходимо использовать вспомогательный блок «<!– @@nextlevel –>». Пример такого шаблона приведён ниже:

01.  	<!-- @link -->
02.  	<a class="ext_menu" title="%text%" href="%link%">%text%</a><br>
03.  	<!-- @@nextlevel -->
04.  	&nbsp;<a class="ext_menu" title="%text%" href="%link%">%text%</a><br>
05.  	<!-- @@nextlevel -->
06.  	&nbsp;&nbsp; <a class="ext_menu" title="%text%" href="%link%">%text%</a><br>

Как видите, в данном примере объявлен блок «@link», после которого следует два блока «@@nextlevel», которые определяют то, как будет выглядеть блок «@link» на втором и третьем уровнях соответственно (в данном случае всё различие сводится к разному количеству символов «пробела» перед ссылкой).

Если вы не выделяете у блока разные уровни, но модулем уровни используются, то для всех уровней, которые в шаблоне не описаны, будет использован последний описанный уровень. В данном примере, для вывода блока «@link» четвёртого и последующих уровней будет использован блок, объявленный в последнем «@@nextlevel».

Реальные шаблоны

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

При сборке модулей и вёрстке шаблонов вы будете оперировать уже существующими блоками, метками и правилами их взаимодействия, которые описаны в данном руководстве для каждого из модулей. Ваша задача будет заключаться в том, что бы отредактировать шаблон, и добавить в него нужный HTML код (или код JavaScript), придающий выводимой модулем информации требуемый вид.

Создание действий

Самый важный этап – создание действий, которые выводят контент, обрабатываемый модулем, для посетителя сайта.

Создавая действия, вы определяете его параметры, которые влияют на выводимый контент. Для каждого модуля будут перечислены возможные действия, а так же приведены возможные параметры с описанием того, как они влияют на формирование контента данным действием модуля.

Назначение действия метке

Когда действие создано, необходимо назначить его конкретной метке в шаблоне страницы сайта. Следует помнить (и использовать) то свойство, что привязка действий к метке наследуется для от родительской страницы.

Если вам необходима более подробная информация о привязке действий к меткам, следует обратиться к «Руководству администратора».

Использование меток в шаблонах модулей

В шаблонах модулей можно использовать метки вида [#metka#] Эти метки будут подкидываться в структуру как и обычные метки из контента или дизайна страницы.

Общие шаблонные переменные ядра

ПерменннаяОписание
%html_escape[]%Убирает слеши, кавычки и.п. из переданного параметра. Полезно тогда, когда нельзя разбить html-разметку. К примеру <img alt='%html_escape[%name_value%]%'>
%eval[]%Позволяет выполнить произвольный php-код из страницы
%GET[]%выводит содержимое параметра GET-запроса
%POST[]%выводит содержимое параметра POST-запроса
%REQUEST []%выводит содержимое параметра GET или POST-запроса
constructor/all_modules.txt · Последние изменения: 2021/01/17 14:40 (внешнее изменение)