私はTwigでいくつかのテンプレートを作成していますが、問題があります。 私はwebshopを使って何度も使用されているHTMLを読み込もうとしています。だから私の考えは、必要なときにいつでもロードできる再利用可能なコードを作成することです。twigが再利用可能なHTML部分セット
私が直面している問題は、forループを実行してそのコードを組み込むと、空の戻り値が得られるということです。言い換えれば、私のコードは、forループ内の各製品にロードする必要があるデータを認識しません。空の情報ボックスを返します。
は明確にする:
は、私はいくつかの製品が含まれるようにスニペットを呼び出すメインテンプレートのindex.htmlを持っている(雨の拡張子を見ていない!):{% if featured %}
{% include 'snippets/products.rain' with {'products': featured, 'type': 'grid'} %}
{% endif %}
マイproducts.rainをスニペットは次のようになります。
forループには、forループごとに同じ95%のhtmlがあります。 forループに含めることができるblock
の中にそのコードを配置したいと思います。
{% set product_html %}
.... a lot of html ....
<a href="{{ product.url | url }}" title="{{ product.fulltitle }}">
<img src="{{ product.image }}" width="100" height="100" alt="{{ product.fulltitle }}"/>
</a>
{% endset %}
そしてそうのように、forループに含ま:
だから私がやったことだった
{% if type %}
{% if type == 'grid' %}
{% for product in products %} {# Products in this case = feautured products #}
<li class="item clearfix">{{ product_html | raw }}</li>
{% endfor %}
{% elseif type == 'other-layout' %}
<div class="item">{{ product_html | raw }}</div>
{% endif %}
{% endif %}
は、しかし、これは空のproduct.image
と空product.fulltitle
でしかし設定されているHTMLを返します。 。
set block
と同じことを試しましたが、同じ結果があります。
私が間違っていることはありますか?
興味深いアプローチ。決してそのことを考えなかった。 'マクロ'はインクルードに対して何らかの性能上のメリットを持っていますか?それとも、毎回そのHTMLをレンダリングするほうがいいでしょうか?それとも、あなたが使っているものは実際に問題ではありませんか?私はまだ枝を学んでいて、あまり参考にしていません。クリーンなコードと最高/最速のパフォーマンスが必要なので、私はこの質問をしました:) – Meules