{inline} тэг в Smarty-templates


28 августа 2006

Недавно столкнулся с проблемой вынести определённые блоки в отдельные файлы темплейтов.
В свою очередь вызывать их используя функцию {include}. Данный подход удобный тем, что достигается большая гибкость в использовании отображения на других страницах.

Но проанализировав, во что компилируется конструкция типа:
{foreach from=$products item=product}
{if $product.featured}
{include file="featured_product_item.tpl" product=$product}
{elseif $product.isnew}
{include file="new_product_item.tpl" product=$product}
{else}
{include file="product_item.tpl" product=$product}
{/if}
{/foreach}

пришёл к печальному выводу, что в результате мы получим банальный php-ный include со всеми вытекающими отсюда скоростными последствиями. Логичнее было бы перед компиляцией вставить код темплейта непосредственно в цикл, после чего только компилировать шаблон.
Странно, почему разработчики смарти не добавили данную возможность.

Полазив по форумам, нашёл солюшен на форуме смартей - {inline} тэг от разработчиков, который является pre-фильтром,
Линк

Возможно кому-то пригодиться

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

4 Комментариев на “{inline} тэг в Smarty-templates”

  1. Vacuum сказал:

    Незнаю - сколько пользуюсь Смарти - include всегда устраивал. О такой проблеме даже не задумывался.

  2. Rayan сказал:

    Просто в цикле инклуд будет достаточно медленным.
    хотя я стараюсь избегать инклудов в циклах Смарти.

  3. Nick сказал:

    Никогда не сталкивался с таким, правда смарти у меня нет, но хз как можно include использовать в цикле... раз это шаблон, то его все равно обрабатывать потом...

  4. Rayan сказал:

    проспамились в каментах чтобы ссыльку получить?
    ладно
    живите





Оставте свое мнение