Бортовой журнал Ктулху

Smarty: вывод массива, разбиение вывода на части

Smarty, как утверждает педивикия, это компилирующий обработчик шаблонов для PHP, один из инструментов, позволяющих отделить прикладную логику и данные от представления в духе концепции Model-view-controller.

 

Я приведу пример работы со smarty на примере скрипта, выводящего текст.

Согласно концепции MVC php-код будет в отдельном файле, результат будет выводиться в шаблон.

Я специально уменьшил или убрал вообще текст из массива для уменьшения размеров статьи; в примере все это будет.

index.php

<?php
require('../libs/Smarty.class.php');//подключаем Smarty
$smarty = new Smarty;//создаем новый объект
$smarty->force_compile = true;//принудительная перекомпиляция - только для отладки
$smarty->debugging = false;
$smarty->caching = false;//кеширование отключено
$smarty->cache_lifetime = 120;
//создаем массив с произвольным содержимым, допустим, это будут куски текста
$smarty->assign("Text",array(
"1).Ручное рубило...",
"2).Оно представляло ...",
"3).В 1832 году ...",
"4). ...",
"5). ...",
"6). ..."));
$smarty->display('index.tpl');//вывод в шаблон
?>

 

В каталоге смарти находим index.tpl

{config_load file="test.conf" section="setup"}
{include file="header.tpl" title=foo}
<div>
<ul >
 {foreach key=key item=item from=$Text name=jb}
<li class="weather">{$item}</li>
{/foreach}
 </ul>
 </div>
{include file="footer.tpl"}

Будет выводиться весь массив в виде списка.

В смарти можно задействовать некоторые свои возможности по работе над массивом, например ограничить количество элементов. Пример на 3 элемента от начала.

<div >
<ul >
 {foreach key=key item=item from=$Text name=jb}
 {if $smarty.foreach.jb.iteration <= 3}
 <li class="weather">{$item}</li>
 {/if}
 {/foreach}
 </ul>
 </div>

А можно еще выбрать диапазон вывода.

<div >
<ul >
 {foreach key=key item=item from=$Text name=jb}
 {if $key > 3}
 <li class="weather">{$item}</li>
 {/if}
 {/foreach}
 </ul>
 </div>

Скачать пример можно во вложении.

Демо

Вложения:
ФайлОписаниеРазмер файла:
Скачать этот файл (smarty.zip)smarty.zip 230 Кб