widget_block内でcallできない場合は一度macroを経由する
例えば次のようなコードの場合、widget_block内でcallを使えると思いきや、Could not resolve function 'caller'
とエラーになってしまいます。
{%- macro hoge() -%} <div class="hoge"> {{ caller() }} </div> <!-- /.hoge --> {%- endmacro -%} {%- widget_block rich_text "hoge" label='widget_blockテスト' -%} {%- widget_attribute "value" -%} {%- call hoge() -%} <p>しかしcallできない</p> {%- endcall -%} {%- end_widget_attribute -%} {%- end_widget_block -%}
この場合、次のコードのように一度callする専用のmacroを作成し、そのmacroをwidget_block内で呼び出すとエラーが起きません。あまり使う機会はないコードですが。。
{%- macro hoge() -%} <div class="hoge"> {{ caller() }} </div> <!-- /.hoge --> {%- endmacro -%} {# このmacroを追加 #} {%- macro call_hoge() -%} {%- call hoge() -%} <p>callできる</p> {%- endcall -%} {%- endmacro -%} {%- widget_block rich_text "hoge" label='widget_blockテスト' -%} {%- widget_attribute "value" -%} {{ call_hoge }} {%- end_widget_attribute -%} {%- end_widget_block -%}