Quicky: inline-includes

WP

^_^
Quicky: inline-includes

Пишу сабж. Возникла проблема. Пишем например
{include file="$var/test.tpl"}
Компилятор должен вставить код шаблона в код шаблона в котором идет вызов. Со статическими названиями всё банально, но $var мы не можем знать на стадии компиляции. Как быть? Есть идея компилировать такое при первом обращении, и сохранять статическое значение. Либо отказывать в inline-вставке.
Какие будут мнения? ;)

-~{}~ 17.01.07 01:43:

P.S. есть идея реализовать магическую констату tplpathdir которая будет доступна при компиляции и предлогать отталкиваться от нее.
 

.des.

Поставил пиво кому надо ;-)
Если есть динамический параметр заменить на вызов инклюда вместо полной вставки шаблона.

P.S. есть идея реализовать магическую констату tplpathdir которая будет доступна при компиляции и предлогать отталкиваться от нее.
Как это поможет проблеме? Если даже от нее отталкиваться то во внутреннем дереве каталого появится такая же проблема.
 

WP

^_^
> Если есть динамический параметр заменить на вызов инклюда вместо полной вставки шаблона.
Именно так и сделал.
> Как это поможет проблеме?
Проблеме это помогло :) Если человек хочет юзать такие вставки, но, например, хочет поюзать конструкцию вроде {include file="$skin/folder/template.tpl"} что был свитч в зависимости от $skin , он делает {include file="$tplpathdir/../folder/template.tpl"} и компилятор подменяет $tplpathdir на папку с текущим шаблоном. Согласен - неудобство относительных путей, но это можно пережить.
> вот и поговорили.
;)
 

alexhemp

Новичок
WP

Мнения будут - а зачем нужны такие инклюды?
ИМХО достаточно статических.

Разве что какие-то извраты вроде динамического списка блоков...
 

WP

^_^
alexhemp
Если под статическим include ты имел в виду параметр file без переменных:
Например, чтобы указать папку со скином.
Если ты имел в виду вставку inline - скорость.
 

alexhemp

Новичок
WP

Да, понял. Папка со скином - хороший пример :)

Я просто выбор папки со скином делаю на этапе инициализации объекта смарти - присваиваю нужный $template_dir (тем более что там есть возможность указать массив - сперва папка дефолтного скина, потом выбранного).

API у класса будет похожий на Smarty?
 

WP

^_^
alexhemp
Тем не менее это полезная штука)

> API у класса будет похожий на Smarty?
Да.
 

magic

lancer
Пишу сабж. Возникла проблема. Пишем например
{include file="$var/test.tpl"}
WP
Что будет при $var равном http://evil.example.org/attack.inc?
P.S. есть идея реализовать магическую констату tplpathdir которая будет доступна при компиляции и предлогать отталкиваться от нее.
Такая магическая консанта уже есть в Smarty. $smarty->template_dir
 

WP

^_^
magic
Он будет скачен и выполнен. И если это неожиданно, то это вина программиста допустившего попадания в эту переменную произвольного значения.
> Такая магическая консанта уже есть в Smarty.
Не совсем то.
 
Сверху