Drupal: 異なるコンテンツタイプのコンテンツを相互にリンクさせる
概要
異なるコンテンツタイプのコンテンツを相互にリンクさせる方法を調べたので、その備忘録です。
具体的には、以下のitem 1
がimage 1
というコンテンツをiiif_image2
というフィールドを介してつながっています。
上記に対して、image 1
というページに、item 1
へのリンクを設けることが目的です。
この実現にあたり、以下の記事を参考にしました。
方法
ビューの追加
/admin/structure/views に移動し、 +ビューを追加
「Create a block」オプションをチェックします
ビューの設定
次のページで、Advancedの設定を行います。
リレーションシップ
field_iiif_image2
のリレーションシップを追加します。これは、2つのコンテンツタイプを関連付けるために重要です。
Require this relationship
にチェックを入れる必要があります。このフィールドを持たない場合には表示しない、という挙動になるものと理解しました。
コンテキストフィルター
次に、現在のコンテンツタイプのランディングページにコンテキストフィルターを追加します。このようにして、ビューで使用される実際のノードIDを取得します。これで、field_iiif_image2
で同じノードIDを持つページのみを見つけることができます。
IDで探す(コンテンツ)
デフォルト値を提供-> URL からのコンテンツ IDにチェックを入れます
次のような結果になります。
Update previewの箇所で、メディアのノードID(ここでは、62602)を入力してみます。本メディアが参照されているアイテムへのリンクが表示されます。
ブロックの追加
以下にアクセスします。
/admin/structure/block
例えば、「Content」の横の「Place block」ボタンを押します。
/node/*
に配置してみます。
結果、冒頭のように、当該imageが属するitemを表示することができます。
まとめ
使用している用語に統一性がなく、わかりにくい点が多く恐縮ですが、参考になりましたら幸いです。
Discussion