私は現在、Python で Web ページを開発しており、Mako をテンプレート エンジンとして使用しています。以前は Joomla フレームワークで PHP を使用していました。そこから、一般的なテンプレート手法は、モジュール位置に表示するモジュールがあるかどうかを確認し、その場合はいくつかのラッピング コード (たとえば、ラッピングdiv
) をロードしてからモジュールを間に挿入することでした。
mako の場合、モジュールの比較は<%block />
、継承ファイルによって挿入される になります。ただし、ラッピング コードを適切に表示する方法がわかりません。
Joomla の例:
<div>
<jdoc:include type="modules" name="my_position" style="none" />
</div>
どちらの場合も、実際のページに応じてコンテンツが置き換えられるため、jdoc
行は同等です。<%block name="my_position" />
私の質問は次のとおりです。コンテンツがないときにレンダリングされるdiv
べきではないラッピングをエレガントに表示するにはどうすればよいですか? block
Mako は、私が見落としているエレガントなソリューションを提供していますか?
前もって感謝します。
編集:私はある種の解決策を見つけましたが、それはきれいではないので、誰かがよりクリーンな解決策を考え出すことができれば幸いです:
<%namespace name="layout" file="layout.mako" />
<%block name="my_position">
<%def name="my_element()">
## Actual position content here
</%def>
${layout.render_my_position(my_element)}
</%block>
次に、でlayout.mako
:
<%block name="banner" />
...
<%def name="render_my_position(my_element)">
<div>
${my_element()}
</div>
</%def>
このソリューションは機能し、コピー ペーストの量は比較的少なく、ラッピング div の変更は簡単です。ただし、これはまだ最適な解決策にはほど遠いため、誰かがより良いアイデアを持っている可能性があります