web-dev-qa-db-ja.com

ノードフィールド値を渡してブロック内のフィルターを表示する

背景

ノードタイプarticleの場合sted(場所)というコンテンツタイプから生成されたマップマーカーのブロックビューを表示します。コンテンツタイプについてarticlekartreferanse(マップ参照)というエンティティ参照フィールド(複数の値を許可)を作成しました。ここで、タイプの複数のノードを選択できますsted(場所)。ここまでは順調ですね。また、Geolocation-CommonMapを使用して、すべてのコンテンツタイプsted(場所)のマーカーを表示するブロック内にビューを作成しました。ここで、参照フィールドをビューに渡して、現在のノードのフィールドkartreferanse(マップ参照)で選択された場所のみを表示したいとします。私はコンテキストフィルター(field_kartreferanse:Content)Content:IDを使用せずに使用するか、ビューでfield_kartreferanse:Contentを使用して関係を構築しようとしました。

質問

現在のノード(記事)のIDを(ブロック内の)ビューに渡し、記事のエンティティ参照フィールドを使用してマップブロックビューに正しいノードIDを表示するにはどうすればよいですか?これを機能させるために、いくつかのフィルター基準も作成する必要がありますか? (field_kartreferanse:Content)Innhold:ID(= [Content:Nid])(後でこのビューを多言語サイトで機能させる必要があります。)

enter image description here

(Drupal 8、ローカルインストール/ mamp、geoロケーションフィールド、ビュー8.1.10)

2
eye-wonder

ブロック(またはビルド配列を使用するもの)でビューを使用する最も簡単な方法は、レンダリング要素として使用する方法です。

$node = \Drupal::routeMatch()->getParameter('node');

$current_nid = $node->id();

$view_arguments = [$current_nid];

 $build['news'] = [
   '#type' => 'view',
   '#name' => 'myviewname',
   '#display_id' => 'block_1',
   '#arguments' => $view_arguments,
   '#weight' => 30,
 ];

return $build;

渡された最初の引数はコンテンツIDとして使用されます。

それをすべてUIで行う場合は、コンテンツフィルターからプルするようにコンテキストフィルターを設定します。

set views contextual filter to pull in content id

次に、ビューに基づいてブロックを配置すると、現在のノードからプルされます。

placing block version of view through CMS

6
oknate

最後に私はそれを作りました。

最初にアイテムのコンテンツタイプを作成します(この場合sted/場所)。次に、関連するアイテムが表示されるコンテンツタイプを作成または編集します(この場合はarticle)。記事には、参照フィールドを追加します。 _Type of item to reference_はcontentであり、参照するコンテンツタイプはyour itemsコンテンツタイプです。 (私はフィールドに無制限の値を選択しました)。

ブロック内のタイプyour itemsのコンテンツを示すビューを作成し、必要なスタイリングを選択します(例:グリッド、フォーマットされていないリスト、カスタムスタイル...)。ビューのプレビューにすべてのアイテムが表示されます。記事の1つを編集して、1つまたは一部のアイテム(すべてではない)を参照するようにします。 articlesで表示するビューブロックを追加します。

関連するアイテムのみを表示するようにビューを編集します:

(advanced)Relationshipsadd:Content using field_your_refernce_field - (Relate each Content with a field_your_refernce_field set to the content.)

(高度)コンテキストフィルター追加:_CONTENT ID_。コンテキストフィルター(コンテンツID)を編集します_When the filter value is NOT available_ _Provide default value_ _Content ID from URL_および(上記)「関係:」_field_your_refernce_field_を選択します

(ビューのプレビューの場合、テスト記事のIDを_Preview with contextual filters:_に追加して結果を確認します。)

enter image description here

6
eye-wonder