CodeIgniter → Template Library
Template Library — это библиотека для организации шаблонов и удобной работы с ними для CodeIgniter. Шаблон сайта состоит из 3 основных частей (header.php, content.php, footer.php).
-system
-templates
--default
---header.php
---content.php
---footer.php
— …
-index.php
PHP 5 или новее.
Пупку /templates/ положить в корень сайта рядом с index.php.
Скорректировать файл .htaccess для загрузки CSS, JavaScript и изображений.
Мой пример:
Здесь можно установить значения каких либо переменных, которые будут доступны всегда в любом виде.
Здесь можно установить значения блоков, которые можно будет отобразить на сайте или дополнить.
Автоматическая подгузка необходимых ресурсов, будут отображаться на всех страницах сайта.
Пример:
Можно передать имя вида для для отображения средней части страницы.
set() — создание переменной для отображения её в шаблоне.
set_template() — изменение шаблона сайта. Рекомендуется вызывать в начале сценария.
set_block() — создание блока. Основное отличие от set(), это то что блок можно продолжить, указав тоже имя.
set_block_view() — создание блока с подгрузкой вида из папки /blocks/ которая находиться в шаблоне.
Первый параметром передаём имя блока который будет создан или продолжен, вторым имя файла который нужно подгрузить и третьим можно передать данные в подгружаемый файл.
get_block() — получение целого блока по его имени, будет полезное если нужно например закэшировать созданый блок.
set_title() — добавление сегмента в заголовок страницы.
set_meta() — добавление метатэгов на страницу.
set_feed() — добавление фида на страницу.
set_css() — добавление CSS файла на страницу.
set_js() — добавление JavaScript файлов на страницу.
view() — аналогичен одноимённому родному методу, только подгружает файлы вида из заданного шаблона и всегда возвращает результат в переменную.
$base_header — содержит все подгруженные метатэги, фиды, css файлы и js файлы.
$base_url — URL сайта заданый в основном конфиге.
$base_path — путь до папки с текущим шаблоном.
$base_title — содержит заголовок страницы.
$block['block_name'] — содержимое блока.
Пример Template Library + CI 1.7.1
Буду рад услышать ваши замечания и дополнения.
Структура папок:
www-system
-templates
--default
---header.php
---content.php
---footer.php
— …
-index.php
Требования:
Codeigniter 1.7.1 или новее.PHP 5 или новее.
Установка библиотеки:
Скачать и распаковать архив в папку /application/libraries/.Пупку /templates/ положить в корень сайта рядом с index.php.
Скорректировать файл .htaccess для загрузки CSS, JavaScript и изображений.
Мой пример:
RewriteEngine on
RewriteCond $1 !^(index\.php|templates|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]
Options +Indexes
AddDefaultCharset utf-8
RewriteCond $1 !^(index\.php|templates|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]
Options +Indexes
AddDefaultCharset utf-8
Настройки:
Все настройки библиотеки находяться в файле /application/config/Template.php//Название папки шаблона
$config['global_template'] = "default/";
//Разделитель сегментов загаловка
$config['title_separator'] = " - ";
//Направление загаловка страницы
//RTL - справа на лево
//LTR - слева на право
$config['title_direction'] = "RTL";
//Переменные по умолчанию
$config['vars_default'] = array();
$config['global_template'] = "default/";
//Разделитель сегментов загаловка
$config['title_separator'] = " - ";
//Направление загаловка страницы
//RTL - справа на лево
//LTR - слева на право
$config['title_direction'] = "RTL";
//Переменные по умолчанию
$config['vars_default'] = array();
Здесь можно установить значения каких либо переменных, которые будут доступны всегда в любом виде.
//Установка блоков по умолчанию
$config['block'] = array();
$config['block'] = array();
Здесь можно установить значения блоков, которые можно будет отобразить на сайте или дополнить.
//Css файлы по умолчанию
$config['head']['css'] = array();
//Js файлы по умолчанию
$config['head']['js'] = array();
//Feeds по умолчанию
$config['head']['feed'] = array();
$config['head']['css'] = array();
//Js файлы по умолчанию
$config['head']['js'] = array();
//Feeds по умолчанию
$config['head']['feed'] = array();
Автоматическая подгузка необходимых ресурсов, будут отображаться на всех страницах сайта.
Пример:
$config['head']['css'] = array(
array('href' => 'css/printer.css', 'rel' => 'stylesheet', 'type' => 'text/css', 'media' => 'print')
);
$config['head']['js'] = array(
array('js/core.js')
);
$config['head']['feed'] = array(
array('href' => 'http://habrahabr.ru/rss/', 'rel' => 'alternate', 'type' => 'application/rss+xml', 'title' => 'My Feed')
);
array('href' => 'css/printer.css', 'rel' => 'stylesheet', 'type' => 'text/css', 'media' => 'print')
);
$config['head']['js'] = array(
array('js/core.js')
);
$config['head']['feed'] = array(
array('href' => 'http://habrahabr.ru/rss/', 'rel' => 'alternate', 'type' => 'application/rss+xml', 'title' => 'My Feed')
);
//Заголовок сайта по умолчанию
$config['head']['title'] = array('Test site');
//Метаинформация
$config['head']['meta'] = array(
array('name' => 'robots', 'content' => 'no-cache'),
array('name' => 'Content-type', 'content' => 'text/html; charset=utf-8', 'type' => 'equiv')
);
$config['head']['title'] = array('Test site');
//Метаинформация
$config['head']['meta'] = array(
array('name' => 'robots', 'content' => 'no-cache'),
array('name' => 'Content-type', 'content' => 'text/html; charset=utf-8', 'type' => 'equiv')
);
Описание методов с примерами:
render() — основная функция, необходимо вызывать в её в конце метода контроллера, она обрабатывает всё переданую в неё информации и выводит на страницу весь контент.Можно передать имя вида для для отображения средней части страницы.
$this->template->render();
set() — создание переменной для отображения её в шаблоне.
$this->template->set('var_name', 'var_value');
set_template() — изменение шаблона сайта. Рекомендуется вызывать в начале сценария.
$this->template->set_template('template_name');
set_block() — создание блока. Основное отличие от set(), это то что блок можно продолжить, указав тоже имя.
$this->template->set_block('sidebar', 'Значение сайдбара');
$this->template->set_block('sidebar', 'Продолжаем сайдбар....');
$this->template->set_block('sidebar', 'Продолжаем сайдбар....');
set_block_view() — создание блока с подгрузкой вида из папки /blocks/ которая находиться в шаблоне.
$this->template->set_block_view('sidebar', 'text', array('var_name' => 'var_value'));
Первый параметром передаём имя блока который будет создан или продолжен, вторым имя файла который нужно подгрузить и третьим можно передать данные в подгружаемый файл.
get_block() — получение целого блока по его имени, будет полезное если нужно например закэшировать созданый блок.
$this->template->get_block('sidebar');
set_title() — добавление сегмента в заголовок страницы.
$this->template->set_title('Welcome');
set_meta() — добавление метатэгов на страницу.
$this->template->set_meta('description', 'My Great Site');
set_feed() — добавление фида на страницу.
$this->template->set_feed('http://habrahabr.ru/rss/');
set_css() — добавление CSS файла на страницу.
$this->template->set_css('css/style.css');
set_js() — добавление JavaScript файлов на страницу.
$this->template->set_js('js/script.js');
view() — аналогичен одноимённому родному методу, только подгружает файлы вида из заданного шаблона и всегда возвращает результат в переменную.
$data = $this->template->view('more');
Переменный в шаблонах:
Все переменные доступны в любых файлах вида.$base_header — содержит все подгруженные метатэги, фиды, css файлы и js файлы.
$base_url — URL сайта заданый в основном конфиге.
$base_path — путь до папки с текущим шаблоном.
$base_title — содержит заголовок страницы.
$block['block_name'] — содержимое блока.
Скачать:
Template Library v 0.1Пример Template Library + CI 1.7.1
Буду рад услышать ваши замечания и дополнения.
Метки: CodeIgniter, PHP



Комментарии:
Ответить
Ответить
$config['head']['js'] = array( 'js/core.js', 'js/more.js' );
Еще мне показалось неудобным, что через метод $this->template->set_css('css/style.css'); путь отсчитвается от templates/default
а через $config['head']['css'] = array( ); — от корня сайта.
А так, за библиотеку спасибо.
Реализовывали ли вы кеширование по блокам шаблона?
Ответить
Спасибо большое за замечания!
Ответить
Очень прошу, продолжайте статьи на тему CI. Добавил в закладки.
Респект!
Ответить
Ответить
Ответить
Извиняюсь за неисправность при переезде на другой хостинг затерялись.
Спасибо что написали!
Ответить
Спасибо еще раз :)
Ответить
у меня три основных шаблона header, content, footer, причем content я разделил на два блока sidebar и wrapper
во wrapper подгружаются тоже файлы шаблонов, в зависимости от выбранного конструктора но вот уже в конечных файлах глобальные переменные типа '$base_path' совсем не глобальные, или я что-то не так делаю? подскажите, спасибо
Ответить
Ответить
Ответить
Полностью аналогичен методу:
За одним исключением, он всегда возвращает содержимое шаблона в переменную, это аналогично такой записи:
Ответить
Ответить
Ответить
1. если в конфиге темплейтов прописать
//Css файлы по умолчанию
$config['head']['css'] = array(
array('href' => 'css/blueprint/screen.css', 'rel' => 'stylesheet', 'type' => 'text/css', 'media' => 'screen, projection'),
array('href' => 'css/blueprint/print.css', 'rel' => 'stylesheet', 'type' => 'text/css', 'media' => 'print')
);
то при формировании линков, между ними вставляется \n
и нет релятивности ссылок. не подставляется поуть до шаблона
2. как подставить подгрузку внешних JS библиотек. например
//Js файлы по умолчанию
$config['head']['js'] = array(
array('http://code.jquery.com/jquery-1.4.1.min.js')
);
на странице получается [removed]
это вот как-то пока ошибки найденные за 20 минут.
направление этой модели шаблоницации для CI умерло?
Ответить
Ответить
Ответить