2015-05-06 4 views
0

Я интегрировал smarty с codeigniter, и я знаю основные из них, но у меня проблема с обработкой макета, хотя у меня есть создание, но все же я запутался, как сделать работу более эффективной ,Smarty layout tpl с Codeigniter с subView

У меня есть макет, в котором заголовок, нижний колонтитул, меню и макет тела, в теле будет зависеть от того, какая страница отображается, теперь моя средняя страница содержит 4-5 тпл, а затем эти 2-3 tlp также имеет файл sub tpl, так что будет способ подачи данных к этим sub tpl, я не хочу, чтобы потом был подан только одним контроллером laoding, потому что это будет беспорядочно. Есть ли способ, чтобы те секции tpl могли иметь свои собственные контроллер и как-то передать необходимые данные.

enter image description here

ответ

0

Вы на ложном пути!

Для использования template inheritance вы должны использовать синтаксис {extends}.

Начните с файла базового шаблона (назовем его template.php). Этот файл будет содержать ваш код заголовка и нижнего колонтитула и многое другое, если вы хотите.

template.tpl:

<html> 
<head> 
    <title>{$title|default:'Default Page Title'}</title> 
    {block name=head}{/block} 
</head> 
<body> 
    {block name=content}{/block} 
</body> 
</html> 

Тогда ваши отдельные страницы будут {продлить} основной файл шаблона и указать необходимое содержание для всех блоков. Обратите внимание, что вы можете сделать блоки необязательными и со значениями по умолчанию, поэтому нет необходимости заполнять все блоки (если вы не укажете его таким образом).

content_page.tpl:

{extends file="template.tpl"} 

{block name=head} 
<link href="/assets/css/styles.css" rel="stylesheet" type="text/css"/> 
<script src="/assets/js/mypage.js"></script> 
{/block} 

{block name=content} 
<h1>Content Page</h1> 
<p>Some text.</p> 
{/block} 

И в контроллере: $this->custom_smarty->display('content_page.tpl');

Смежные вопросы