2019-04-29

Craft CMS の Matrix の取り方がまだまだわかっていない

このエントリで別のセクションのをMatrixで取り出すのを試してみた。

今回新たにセクションを作ってみて、そちらで管理したものを引っ張ってきて使えるようにしてみようとしたときにlightswitch部分をうまく取れなかった。

articleセクションのMatrix側の設定

コメント表示をONにしたときはbookセクションの方に書いた感想を表示させる。

bookセクションはこんな感じ

articleセクションのエントリではこんな感じで選択してある。

うまいことコメント表示のlightswitchが取れないなー、と思ってたんですが。

Lightswitch フィールド | Craft 3 ドキュメント
https://docs.craftcms.com/v3/j...

以下の感じに修正していって無事解決。

とりあえず実装としてはMatrix内の各Blockごとにtwigをわけている。

{% for block in entry.articlebody.all() %}
  {# ブロックタイプごとのパーツを読み込み #}
  {% include '_matrix_component/' ~ block.type ignore missing %}
{% endfor %}

そのうえで、この場合は rel_book.twig で取り出す時に rel_book.twig で

{% set relBookCommentFlag = block.rel_book_comment %}

と変数セットしたうえでの

{% if relBookCommentFlag %}
{{ rel.contentText }}
{% endif %}

という感じで判定して取り出すか

{% if block.rel_book_comment %}
{{ rel.contentText }}
{% endif %}

で取り出すかのどちらか。

エントリを選択して、それのループを回して取り出すと言ったことに意識が言っていたけれども、matrixをブロックごとに取り出している時点で block に渡ってきているというのを @bun に教えてもらった。

感謝感謝。