Создайте в index.html
{$wa->globals("test", "test")}
Достаньте эту переменную в шаблонах магазина, например, category.html и увидите null
Пытался делать так
{assign var=test value="test" scope="global"}
результат тот же.
Отсюда вопрос: есть ли вообще возможность создать и использовать глобальные переменные?
p.s. тема использована стандартная
10 комментариев
Шаблон index.html подключается после обработки category.html, поэтому так делать не получится. Попробуйте использовать дополнительные параметры поселения.
Это шутка такая? Тогда в чём прикол создавать $wa->globals() Для того, что метод мог создать глобальную переменную, которую нельзя будет использовать во вложенных шаблонах, потому что они компилируются до импорта в index файл?
А на каком этапе компилируется index файл? Почему нельзя сначала импортировать всё что нужно в главный файл, а затем всё это добро скомпилировать в html? В этом случае, можно будет использовать созданные с помощью вышеуказанного метода глобальные переменные во вложенных шаблонах.
Зато можно использовать global-переменную из category.html в index.html
Зато нельзя использовать global-переменную из category.html в cart.html, checkout.html, product.html...
Естественно, т.к. она создаётся на этапе компиляции шаблона.
Что насчёт этого?
Файл index.html — это шаблон макета. Для обработки шаблона макета нужно сначала получить содержимое, которое в него добавят экшены. В шаблон макета можно быть подключено содержимое одного или более экшенов. Когда содержимое, сформированное экшенами готово, оно вставляется в шаблон макета в виде переменных Smarty. Поэтому сначала экшены, потом макет. В вашем случае сначала экшен категории (который для своей работы задействует шаблон category.html), потом общий макет страниц витрины (шаблон index.html).
Предложите нужный вам порядок обработки шаблонов на форуме для разработчиков. Хотя есть вероятность, что нам вместе удастся найти приемлемый способ решения стоящей перед вами задачи и с текущей логикой, если вы опишете эту задачу.
Если мне нужно, что-то вроде такого, то дополнительные параметры не помогут
Для этого придётся создавать блок, типа {$wa->block("shop.global_vars")} и вставлять в нужных шаблонах.
решает эту убогую проблему.
"убогую" проблему может и решает, однако речь была о функции $wa->globals(), которая, как я уже понял, на самом деле создаёт глобальную переменную, но которую не достать во вложенных шаблонах, поскольку они импортируются в index файл, уже скомпилированными.