Список переменных в шаблоне Smarty

YK115

Guest
Список переменных в шаблоне Smarty

Здравствуйте!

Возможно ли в Smarty узнать список незамененных переменных, т.е. можно ли стандартными средствами Smarty после выполнения $smarty->fetch(...) узнать список незамененных переменных.

Спасибо!
 

Demiurg

Guest
что ты называешь незамененными переменными ?
 

Demiurg

Guest
В smarty все переменные задаются через assign и его разновидности включая append.
 

YK115

Guest
Автор оригинала: Demiurg
В smarty все переменные задаются через assign и его разновидности включая append.
Это понятно. Распишу подробнее.

Есть набор неких модулей, которые формируют некий html. Есть некий шаблон, в этом шаблоне можно использовать набор переменных, соответствующих определенным модулям. За раннее не изветсно какие переменные будут присутствовать в шаблоне.

Вот и хочется узнать набор этих переменных и уже для них сделать
PHP:
$smarty->assign('module_name', $module_name->make());
 

YK115

Guest
Автор оригинала: Demiurg
что такое $module_name ?
это объект smarty ?
Это строка :) Например news

-~{}~ 15.12.04 12:57:

а
PHP:
$module_name->make()
это формbрование представления модуля news.

-~{}~ 15.12.04 13:00:

т.е. в упрощенном варианте примерно так
PHP:
foreach ($module_names as $module_name) {
  $smarty->assign($module_name, $module_name->make());
}
где $module_names как раз необходимый массив переменных из шаблона.
 

Demiurg

Guest
$module_names - это объект какого то класса. Отсюда и вопрос. Что за класс имеет ли этот класс какое то отношение к smarty?
 

YK115

Guest
Автор оригинала: Demiurg
$module_names - это объект какого то класса. Отсюда и вопрос. Что за класс имеет ли этот класс какое то отношение к smarty?
Еще раз... Например...
Есть шаблон main.tpl
Код:
<html>
<body>
  <p>Test</p>
  {$news_list}
</body>
</html>
Зараннее неизвестно, что в этом шаблоне будет именно news_list, может быть и article_list.

есть код:
PHP:
$module_names = array();
$module_names = $smarty->get_template_vars('main.tpl');
foreach ($module_names as $module_name) { 
  $smarty->assign($module_name, $module_name->make()); 
}
$out = $smarty->fetch('main.tpl');
т.е. news_list должна замениться на список новостей. Вопрос: есть ли возможность использовать "get_template_vars"?

-~{}~ 15.12.04 13:14:

Забыл написать, где-то выше определен класс:
PHP:
class news_list {
  function make() {
    return 'List of news.';
  }
}
 

Demiurg

Guest
Если я правильно тебя понял, то нужно сделать вызов модулей из шаблонов. То есть если в шаблоне есть такой модуль, то он генирируется, если нет - нет.
 

YK115

Guest
Автор оригинала: Demiurg
Если я правильно тебя понял, то нужно сделать вызов модулей из шаблонов. То есть если в шаблоне есть такой модуль, то он генирируется, если нет - нет.
Да, примерно так.
 

Demiurg

Guest
тогда лучше сделать функцию, которая будет генерировать модуль и вызывать её из шаблона.
{load_my_module name = "news_list"}
 

YK115

Guest
Автор оригинала: Demiurg
тогда лучше сделать функцию, которая будет генерировать модуль и вызывать её из шаблона.
{load_my_module name = "news_list"}
Ясно, сложно получается, попробуй объясни дизайнеру это. Но все равно, спасибо за идею!
 

Demiurg

Guest
Если регистрировать каждый модуль, то можно обойтись
{news_list}
 
Сверху