例えば次のようなコードの場合、widget_block内でcallを使えると思いきや、Could not resolve function 'caller'
とエラーになってしまいます。
{%- raw -%}
{%- 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 -%}
widget_block内でcallを使ってエラーになってしまっている様子
この場合、次のコードのように一度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 -%}
widget_block内でmacroを使ってエラーが解消された様子