西山さんのこちらの記事を読んで。
MovableType.netで記事(ウェブページ)を関連付けしてみた | www.ni4.jp
https://www.ni4.jp/2020/05/20-110300.html
MTAppjQuery の宣伝もありがとうございます!(笑
次のリリースでこの辺につかえそうな機能追加もある予定だけど。
MovableType.net はどんどん機能追加されっててるなぁ。
さすがです!!
西山さんが書いてたこの辺の話。
なんとなく mt:RelatedEntries
の入れ子みたいなのでいけるんじゃないのかなぁという気がしつつ、試してないのでその辺は @hei_a に期待というかんじで(笑
関連付けされているエントリが関連付けている他のエントリを取り出す
このブログでもエントリ書く時に関連記事選択のブロックをおいて関連付けするようにしている。
これは基本的に一方向なので相互に関連付けする感じにはしていない。
相互に関連づけるのはこの辺のプラグインとかだったかな。
Reverse Relations
https://plugins.craftcms.com/r...
今なら GraphQL でやるかもな。
一方向で関連付けしておきつつ、逆のパターンは自エントリを参照している物を表示するようにしている。
で取得したものを表示している。
この relatedEntries
から関連づけているエントリを取り出す。
{% set thisEntryid = entry.id %}
{% set relatedEntryIds = [] %}
{% for entry in relatedEntries %}
{% set relatedEntryIds = relatedEntryIds|merge([entry.id])|unique %}
{% for block in entry.articlebody.type('rel_article').all %}
{% set block_rel_article = block.rel_article.all() %}
{% for rel in block_rel_article | filter( rel => rel.id != thisEntryid ) -%}
{% set relatedEntryIds = relatedEntryIds|merge([rel.id])|unique %}
{% endfor %}
{% endfor %}
{% endfor %}
relatedEntries
ループで relatedEntryIds
にエントリIDを merge
していく。
merge - Documentation - Twig - The flexible, fast, and secure PHP template engine
https://twig.symfony.com/doc/2...
ただ、他のエントリでも同様のエントリを merge
していく場合があるかもなので unique
フィルタを追加しておく。
Filters | Craft 3 Documentation
https://docs.craftcms.com/v3/d...
エントリの中で関連付けをしているマトリックスのブロック rel_article
のみを取り出してループする。
Matrix Block Queries | Craft 3 Documentation
https://docs.craftcms.com/v3/d...
こちらも同様に merge, unique
していく。
ループする時に自エントリは入れる必要がないので
filter を入れて処理する。
filter - Documentation - Twig - The flexible, fast, and secure PHP template engine
https://twig.symfony.com/doc/2...
色々と @tinybeans @BUN に教えてもらいながら完成。
これで対象となる id が取り出せたのであとは id をループしてエントリを表示する。
西山さんが考えてた関連付けという意味ではちょっと違うけどとりあえずということで。
LiteSpeed Cache 動いてるからその辺更新されないと記事には反映されない気もする。
テンプレート書かないとすぐ忘れるのでちょこちょこ書いてないとだなー。