Установка свойств модуля не требует каких-то специальных навыков или раздумий. Единственное что требуется, это выбрать одно из возможных значений для каждого свойства. В руководстве администратора описан процесс настройки свойств модуля, и он не должен вызвать больших затруднений.
Следует помнить, что по умолчанию, значение свойства наследуется от базового модуля, и в случае если используется несколько дочерних модулей, необходимо переопределить значение свойства у конкретного дочернего модуля.
Некоторые модули могут прописывать свойства к каждой странице сайта. Задание значений этих свойств так же не должно вызывать затруднений. Как и в случае со свойствами модуля, значения свойств модуля к странице наследуются от родительской страницы, и вам достаточно задать значения по умолчанию у главной страницы сайта, и только в случае необходимости менять эти значения уже у конкретных страниц.
Любой модуль использует для своей работы шаблоны, которые определяют то, как будет выведен контент, обрабатываемый конкретным модулем. Файлы шаблонов модуля расположены в каталоге модуля в папке «templates_user». Файлы шаблонов должны иметь расширение «html» или «htm».
Для дальнейшего обсуждения, понимания и тем более работы с шаблонами модулей нам потребуется два важных понятия: блок и переменная.
Рассмотрим понятие блока сразу на примере. Допустим, есть модуль, отвечающий за ведение базы данных участников группы вечерних занятий. Данный модуль имеет административный интерфейс, где для каждого участника указываются следующие значения:
На страницах сайта данный модуль должен представить свой контент в табличном виде, что бы участники занятий смогли контролировать своё посещение. Для того, что бы отобразить такой контент, необходимо вывести заголовок таблицы (блок начала), затем какое-то количество строк (блок строки) и подвал (блок окончания) (Рис. 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>
Теперь должен возникнуть закономерный вопрос. Ведь блок, используемый для вывода строк должен выводить разные строки, то есть строки с разными данными, но при этом, форматирование строк остаётся неизменным. Здесь и выходят на сцену переменные, которые заменяются теми или иными значениями. В нашем случае, модуль будет использовать четыре переменные:
Возвращаясь к нашему примеру и Рисунку 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. <a class="ext_menu" title="%text%" href="%link%">%text%</a><br> 05. <!-- @@nextlevel --> 06. <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-запроса |