Синтаксис¶
ImageCMS использует свой собственный шаблонизатор, который по своему синтаксису очень похож на Smarty, но более быстр и потребляет меньше памяти. Все функции или переменные располагаются между разделителями { и }.
Комментарии¶
1 {//Текст комментария}
2 <p>
3 {$var}
4 </p>
5
6 {/* Текст комментария */}
7
8 <!-- Также можно использовать HTML комментарий. Этот текст будет виден пользователю. -->
Переменные¶
Переменные начинаются со знака $. Переменные ничем не отличаются от переменных в PHP и состоят из цифр, букв, знаков подчёркивания.
1 {$var} - простая переменная
2
3 {$var.2}
4 {$var[2]} - отображает второй элемент числового массива
5
6 {$var.name}
7 {$var['name']} - отображает значение ключа "name"
8
9 Еще несколько комбинаций:
10
11 {$var.user.id}
12 {$var.pages[4]}
13 {$_POST.text}
14
15 {$id = 10}
16 {$id++}
17
18 {$first_name . $last_name}
Встроенные Функции¶
{foreach}
PHP код:
1 $emails = array('admin@localhost', 'webmaster@localhost', 'root@localhost');
Этот пример выведет все значения массива $emails:
1 {foreach $emails as $k => $v}
2 {$v} <br />
3 {/foreach}
,{else},{elseif}
Примеры:
1 {if $logged_in == TRUE}
2 Здравствуйте {$username}
3 {/if}
4
5 {if $id == '0' OR $id == 1 }
6 ...
7 {/if}
8
9 {if $page.id == 1}
10 ...
11 {else:}
12 ...
13 {/if}
14
15 {if $var == 10}
16 ...
17 {elseif $var == 1}
18 Использование elseif
19 {else:}
20 ...
21 {/if}
Использование функций PHP
1 {if count($array) < 10}
2 ...
3 {/if}
4
5 {if $_POST.pass != md5($pass)}
6 Ошибка авторизации.
7 {else:}
8 ...
9 {/if}
{for}
1 {for $i = 0; $i < 10; $i ++}
2 {$i}
3 {/for}
{truncate}
Функция truncate предназначена для обрезания длинного текста.
Пример:
1 <?php
2 $text = 'Здесь будет очень длинный текст';
3 ?>
4
5 {truncate($text, 15, '...')} - Выведет "Здесь будет оче..."
{literal}
Разделители { и } используются например для написания CSS стилей или Javascript кода и шаблонизатор принимает этот код за свой, что произведет к ошибке.
Чтобы этого избежать предназначены теги {literal}.
Пример:
1 {literal}
2 .css_class {
3 font-size:12px;
4 color:#fff;
5 width:75%;
6 }
7 {/literal}
Примечание:
Внимание: все переменные между тегами {literal} не будут обрабатываться шаблонизатором.
Использование функций PHP¶
Также в шаблонах вы можете использовать функции PHP.
Пример:
1 {date('d-m-Y H:i:s')} - Отобразит текущую дату.
Для разработчика¶
Пример использования шаблонизатора:
1 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
2
3 class My_class extends Controller {
4
5 public function index()
6 {
7 // Указание значения переменной
8 $this->template->assign('text', $text);
9
10 // Указание значений из массива
11 $array = array(
12 'var1' => 'var 1 value',
13 'var2' => 'var 2 value',
14 'var3' => 'var 3 value'
15 );
16
17 $this->template->add_array($array);
18
19 // Чтение файла шаблона в переменную.
20 $result = $this->template->fetch('news', $array); // Будет возвращен файл ./templates/sitemplate/news.tpl
21
22 // Отображение файла
23 $this->template->display('header', $array); // Будет отображен файл ./templates/sitemplate/header.tpl
24
25 // Чтение файла news.tpl в переменную $content и отображение main.tpl
26 $this->template->show('news');
27 }
28
29 }
Чтобы изменить основные настройки шаблонизатора отредактируйте файл ./application/libraries/template.php
1 class Template extends Mabilis {
2
3 public $template_vars = array();
4
5 function Template()
6 {
7 $this->CI =& get_instance();
8
9 $this->modules_template_dir = TEMPLATES_PATH.'modules/';
10
11 $config = array(
12 'tpl_path' => TEMPLATES_PATH.$this->CI->config->item('template').'/', // Путь к директории с файлами шаблона
13 'compile_path' => BASEPATH.'cache/templates_c/', // Путь к директории где будут сохраняться скомпилированные файлы
14 'force_compile' => TRUE, // Компилировать шаблоны при каждом вызове
15 'compress_output' => TRUE, // Включить сжатие с помощью PHP модуля zlib.
16 'compiled_ttl' => 84600, // Время жизни скомпилированного шаблона
17 );
18
19 ...
20 }