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