Синтаксис

Шаблон не поддерживается в этой версией системы

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, // Время жизни скомпилированного шаблона.
            );

        ...
}