Синтаксис

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 }