HubSpotの基本的な使い方から現場ベースのナレッジまで、HubSpotに特化して情報をご提供します。
どんどんコンテンツを追加していきますので、ご期待ください!

  1. Penseesトップ
  2. How to HubSpot
  3. widget_block内でcallできない場合は一度macroを経由する
CMS

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 -%}
widget_block内でcallを使ってエラーになってしまっている様子
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を使ってエラーが解消された様子
widget_block内でmacroを使ってエラーが解消された様子

MAIL NOTIFY

パンセへのご相談はこちら