Я использую как Jinja2, так и Nunjucks (в зависимости от проекта), но еще не придумал, как создавать повторно используемые элементы с несколькими блоками, содержащими произвольный HTML. Например (псевдокод):
{% macro item(class) %}
<article class="{{ class }}">
<h3>{{ caller(1) }}</h3>
<p>{{ caller(2) }}</p>
</article>
{% endmacro %}
{% call item %}
Hello <abbr title="...">world</abbr>!
{% ---- %}
lorem <em>ipsum</em> dolor <strong>sit</strong> amet
{% endcall %}
Передача HTML соответствующих блоков в виде обычных аргументов (то есть строк) в макрос кажется нереальной.
Менее надуманным примером могут быть формы в стиле Bootstrap:
<div class="form-group">
<label for="{{ id }}" class="control-label">$label</label>
<input type="{{ type }}" id="{{ id }}">
<p class="help-block">$hint</p>
</div>
Здесь и $label
, и $hint
могут быть произвольными блоками HTML — возможно, даже может быть несколько полей, определенных вне макроса.
Какой рекомендуемый подход здесь?