Шаблон хамелеона глобальные переменные

Я использую Pyramid 1.3 и их шаблоны, написанные на хамелеоне. Поскольку различным страницам или шаблонам может потребоваться глобальное изменение таблицы стилей для каждой страницы, я хотел бы иметь возможность переопределять классы тега body на странице (конечно, я бы предпочел сделать это из шаблонов).

<body class="${global_variable_or_something_else}"></body>

Что я пробовал:

  • Использование tal:define="global body_class" из вложенных макросов. Не работает
  • Я пытался использовать <metal:div metal:define-slot="vars">...variable definition...</metal:div> а также <metal:div metal:fill-slot="vars">...redefinition...</metal:div>и переопределение переменных в подмакросах. Это работает, но что, если у меня есть несколько определений переменных в родительском шаблоне, и мне нужно переопределить только одно?

Есть ли хороший способ сделать это лучше с METAL?

1 ответ

Решение

Глобальные переменные в шаблонах страниц, такие как глобальные переменные в Python, могут быть переопределены. Таким образом, вместо этого вы делаете следующее:

<rootelement metal:define-macro="macroname"
             tal:define="global var1 value1; global var2 value2">
    <metal:overrides define-slot="overrides"></metal:overrides>
    <!-- some template code using var1 and var2 -->
</rootelement>

Тогда используйте metal:fill-slot обеспечить переопределения; Вы можете переопределить любое количество переменных или столько, сколько хотите:

<rootelement metal:use-macro="macroname">
    <metal:overrides fill-slot="overrides"><tal:defines define="global var1 differentvalue" /></metal:overrides>
</rootelement>
Другие вопросы по тегам