同じセクション内で、エントリAが別のエントリBを選択している場合に、エントリB側でエントリAを取り出すというのをやってみた。

【CraftCMS】エントリフィールドをキーとしてエントリを取得する - Qiita
https://qiita.com/SHIN_DEVELOP...

@BUN がコメントしてる内容を参考にさせてもらって動いた。

ドキュメントサイトとしては以下のリレーションの説明の中の「行列を経由する」が参考になった

リレーション | Craft 3 ドキュメント
https://docs.craftcms.com/v3/j...

今回の対象が Matrix に持たせてあるブロックなので。

CMSのフィールド構成

構成(hundle)としては

セクション:article
本文部分を管理するMatrixフィールド:articlebody
記事選択のブロック:rel_article

記事詳細ページ用のテンプレートで処理するので以下のような感じで取り出す。

{% set relatedEntries = craft.entries.section('article').relatedTo({
    targetElement: entry,
    field: 'articlebody.rel_article'
  }).all() %}

例えば別のテンプレート(記事を一覧表示させてるとか)であれば

{% set hoge = craft.entries.section('article').id(5943) %}

{% set fuga = craft.entries.section('article').relatedTo({
  targetElement: hoge,
  field: 'articlebody.rel_article'
}).all() %}

こんな感じでまず id 指定など(slugとかタイトルとか)で取り出したものをtargetElement に指定すればよい。

エントリの選択関係と表示状態

このエントリで

MacBookAir のキーボードを修理に出した | mersy note
https://note.mersy418.com/arti...

以下のエントリを選択している。

MacBook をキーボードの修理にだした | mersy note
https://note.mersy418.com/arti...

管理画面

表示側

関連記事として表示する

あとはそれを取り出して表示させる。

最終的にはこんな感じで。

{# 自分を参照しているエントリがある場合はそれを表示 #}
  {% set relatedEntries = craft.entries.section('article').relatedTo({
    targetElement: entry,
    field: 'articlebody.rel_article'
  }).all() %}

  {% if relatedEntries %}
  <div class="card">
    <div class="card-header">関連記事リスト</div>
    <ul class="list-group list-group-flush">
    {% for entry in relatedEntries %}
      <li class="list-group-item"><a href="{{ entry.url }}">{{ entry.title }}</a></li>
    {% endfor %}
    </ul>
  </div>
  {% endif %}

https://note.mersy418.com/article/mn-macbook

targetElement, sourceElement 慣れないと理解しづらいけど使いながら覚えていきたいところ。