Я хочу использовать макросы с пирамидой + движок ZPT (Chameleon).Как использовать макросы с пирамидой/ZPT (Chameleon)
Документы говорят, что «Шаблон одной страницы может вместить несколько макросов». http://chameleon.readthedocs.org/en/latest/reference.html#macros-metal
Таким образом, я определил файл macros.pt
:
<div metal:define-macro="step-0">
<p>This is step 0</p>
</div>
<div metal:define-macro="step-1">
<p>This is step 1</p>
</div>
и глобальный шаблон main_template.pt
со всеми HTML-материал, определяющий слот content
.
и шаблон для моего зрения progress.pt
, который использует main_template.pt
для заполнения паза:
<html metal:use-macro="load: main_template.pt">
<div metal:fill-slot="content">
...
<div metal:use-macro="step-0"></div>
...
</div>
</html>
До сих пор я болезненно узнал, что я не могу просто сказать use-macro="main_template.pt"
, потому что хамелеон не загружает шаблоны автоматически Zope делает. Таким образом, я должен был добавить фрагмент load:
раньше.
use-macro="step-0"
. Это вызывает NameError для step-0
. Я попытался предварительно загрузить macros.pt
чем-то вроде <tal:block tal:define="compile load: macros.pt" />
, но это не помогло.
Как я могу использовать макросы, которые собраны в файле макросов макросов?
От Zope pagetemplates опыт, я бы ожидал 'tal: define =" macros_template load: macros.pt "metal: use-macro =" macros_template.macros ['step-0'] "' to work; каждый объект шаблона имеет атрибут 'macros' с ключами * на * содержащий макрос. Однако не пробовал это с Хамелеоном. –