2

私は自分自身が次のスタイルのテンプレートスニペットで終わることに気づきました:

<ul>
{% for item in items %}
<li><a class="{% if item.active %}active{% endif %}" title="{{ item.title }}" href="{{ item.get_absolute_url }}"><img src="{% thumbnail item.image 24x24 crop upscale %}" />{{ item.title|truncate_chars:30 }}</a></li>
{% endfor %}
</ul>

しばらく前、aiはHTML出力用の優れたヘルパーを備えたPHPフレームワークを使用する必要がありました。これは実際のテンプレートレイヤー(むしろプレーンなPHP)ではないため、直接比較できないことを私は知っていますが、アイデアのために:

<ul>
<?php foreach($items as $item) { ?> 
<li><?= HTML::anchor($item->url(), HTML::mage($item->image->url(24)), Text::limit($item->title, 30), array('title' => $item->title, 'class' => ($item->active) ? 'active' : '') ?></li>
<?php } ?>
</ul>

HTMLタグの開始/終了を処理したり、 = 'や" 'を含む属性を記述したりする必要がないアプローチがとても気に入りました。

好き:

<?= HTML::anchor($url, $title, array('class' => $class)) ?>

次のようにレンダリングされます:

<a href="http://url.my/" class="my-class">My Title</a>

この種のテンプレートをどのように処理しますか?この状況に対処するいくつかのgoottemplatetag-librariesを知っていますか?django-templatesでそれはまったく可能ですか、それともそれらのロジックは異なるパス/概念に従いますか?

4

1 に答える 1

3

これは、技術的には通常のテンプレートである「パーシャル」と呼びたいものを定義することで実現できます。例を示しましょう。

メインテンプレート:

<ul>
{% for item in items %}
<li>
    {% include "partial/link.html" with url=item.get_absolute_url, title=item.title, active=item.active, image=item.image %}
</li>
{% endfor %}
</ul>

部分的/link.html:

<a class="{% if active %}active{% endif %}" title="{{ title }}" href="{{ url }}">
    <img src="{% thumbnail image 24x24 crop upscale %}" />{{ title|truncate_chars:30 }}
</a>
于 2012-07-24T09:04:47.147 に答える