Wiki
Clone wikiCMS / Подключение шаблонизатора
Шаблонизатор AtomM CMS
Наверно многие, кто строил хорошее ПО, ориентированное на пользователя знающего только html, сталкивался с реализацией меток, частей кода(строки) которые заменяются на нужное пользователю содержимое. В нашей CMS, конечно, не обошлось без них. С помощью них работают наши шаблоны и многие другие разделы CMS, но в отличие от своих конкурентов, у нас любой разработчик модуля, плагина или даже сниппета может легко использовать привычный в CMS синтаксис меток в своих программах-дополнениях, без лишнего “шестрения” этого весьма непростого механизма.
Функция, которая нам в этом помогает, вызывается так:
$Viewer->parseTemplate($template, array('people' => $arraymarkers))
- $template - строка, в которой нужно произвести замену меток на нужный нам код.
- people - название массива от которого будут наследоваться названия меток.( {{ people.name }} )
-
$arraymarkers – ассоциативный массив из: название метки => значение
-
Пример $arraymarkers :
#!php Array( 'name' => 'Дарья', 'subname' => 'Петрова', 'age' => '18' );
Для более эффективного и полноценного примера рассмотрим код:
#!php // Получаем строку с метками из файла $template = file_get_contents(dirname(__FILE__).'/template/index.html'); // Подключаем класс(именно с таким имененем) $Viewer = new Fps_Viewer_Manager; // Создаем массив (ключи это названия меток) $markers = array(); $markers['name'] = 'Дарья'; $markers['subname'] = 'Петрова'; $markers['age'] = '18'; //Получаем строку с замененными метками $template = $Viewer->parseTemplate($template, array('people' => $markers));
Обратите внимание на запись последней и самой главной строки. Нужно обязательно не забыть наследование от $Viewer и всегда устанавливать массив с метками, вложенным в ключ другого: array('people' => $markers). Также обратите внимание, обращение к элементам массива происходит через точку. Тоесть, если рассматривать данный пример, то наши метки будут выглядеть так(именно с пробелами): {{ people.name }}{{ people.subname }}{{ people.age }}
Дополнительные функции шаблонизатора.
Как вы уже догадались, такая относительно сложная запись не просто так. Она необходима для дополнительных функций. Именно ради этих дополнительных функций и создавался шаблонизатор, ради поддержки операторов, условных выражений и циклов, include, fetch-функций и других заложенных в cms функций.
Если вам эти функции не нужны, а нужно просто заменить голую метку, то не советую использовать шаблонизатор, лучше обойтись стандартными функциями php: preg_replace() и str_replace().
Подробнее о возможностях и синтаксисе шаблонного интерпретатора написано тут: Синтаксис шаблонного интерпретатора
Как правильно подготовить содержимое метки для работы с циклами.
Если метке присвоить массив, то к его ключам можно обратиться через специальные циклические конструкции. Например: Мы присвоили метке с именем names вот такой массив
#!php Array( [0] => Array( 'name' => 'Дарья', 'subname' => 'Петрова', 'age' => '18' ), [1] => Array( 'name' => 'Мария', 'subname' => 'Родионова', 'age' => '48' ), [2] => Array( 'name' => 'Павел', 'subname' => 'Романов', 'age' => '98' ) );
И тогда можно будет использовать цикл, для извлечения информации из массива:
#!php {% for mark in names %} {{ mark.name }} - имя {{ mark.subname }} - фамилия {{ mark.age }} - возраст {% endfor %}
Где mark произвольная комбинация латинских букв и цифр, а names название метки с массивом.
Результатом данного примера будет:
#!php Дарья - имя Петрова - фамилия 18 – возраст Мария - имя Родионова - фамилия 48 – возраст Павел - имя Романов - фамилия 98 - возраст
Updated