У меня есть базовый шаблон, который затем создает суб-шаблоны.
Сторона шаблона:
<header>
{onload;file={var.flag;if [val]=1;then 'nav.tpl';else ''}}
</header>
<main>
{onload;file={var.templatePath}}
</main>
Итак main
тег заполняется под-шаблоном, а заголовок — нет. Это говорит, TinyButStrong Error in field {var.flag...}: the key 'flag' does not exist or is not set in VarRef. (VarRef seems refers to $GLOBALS) This message can be cancelled using parameter 'noerr'.
но на самом деле он существует в VarRef
массив вместе с templatePath
,
Php Side:
global $templatePath, $flag;
$this->tbs->LoadTemplate($pageTemplateFile);
if(true){$flag = 0;}
$this->tbs->Show();
По умолчанию в TBS поля [var] ссылаются на $ GLOBALS (что аналогично переменным, локально объявленным с помощью «global»).
Тем не менее, в вашем фрагменте значение $ flag равно NULL, когда шаблон загружен, потому что он объявлен с «global», но ему еще не присвоено значение ($ flag = 0 назначается после загрузки шаблона).
Поэтому для PHP: is_set ($ flag) вернет false при обработке полей [onload].
Поэтому вы должны использовать поля [onshow] вместо [onload] или просто установить $ flag перед загрузкой. Как это :
global $templatePath, $flag;
if(true){$flag = 0;}
$this->tbs->LoadTemplate($pageTemplateFile);
$this->tbs->Show();
Других решений пока нет …