it-swarm.com.de

Übergeben Sie den Knotenfeldwert, um den Filter in einem Block anzuzeigen

Hintergrund

Für den Knotentyp Artikel Ich möchte eine Blockansicht von Kartenmarkierungen anzeigen, die aus einem Inhaltstyp namens sted (Orte) generiert wurden. Für den Inhaltstyp Artikel habe ich ein Entitätsreferenzfeld (mehrere Werte zulässig) mit dem Namen kartreferanse (Kartenreferenz) erstellt, in dem Sie mehrere Knoten des Typs auswählen können sted (Orte). So weit, ist es gut. Ich habe auch eine Ansicht in einem Block erstellt, in der Markierungen für alle Inhaltstypen sted (Orte) mithilfe einer Geolocation - CommonMap angezeigt werden. Jetzt möchte ich das Referenzfeld an die Ansicht übergeben, um nur die im Feld ausgewählten Stellen anzuzeigen kartreferanse (Kartenreferenz) für den aktuellen Knoten. Ich habe versucht, Kontextfilter zu verwenden (field_kartreferanse: Content) Content: ID ohne Glück und/oder versucht, eine Beziehung mit field_kartreferanse: Content in der Ansicht aufzubauen .

Die Frage

Wie kann ich die ID des aktuellen Knotens (Artikels) an die Ansicht (in einem Block) übergeben und das Entitätsreferenzfeld im Artikel verwenden, um die richtigen Knoten-IDs in der Kartenblockansicht anzuzeigen? Muss ich auch einige Filterkriterien festlegen, damit dies funktioniert? (field_kartreferanse: Content) Innhold: ID (= [Content: Nid]) (Später muss diese Ansicht auf einer mehrsprachigen Site funktionieren.)

(enter image description here

(Drupal 8, lokale Installation/Mamp, Geo Locationfield, Ansichten 8.1.10)

2
eye-wonder

Der einfachste Weg, eine Ansicht in einem Block (oder etwas, das ein Build-Array verwendet) zu verwenden, ist als Renderelement:

$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;

Das erste übergebene Argument wird als Inhalts-ID verwendet.

Wenn Sie alles über die Benutzeroberfläche ausführen möchten, legen Sie Ihren Kontextfilter so fest, dass er aus der Inhalts-ID abgerufen wird.

(set views contextual filter to pull in content id

wenn Sie dann einen Block basierend auf der Ansicht platzieren, wird er vom aktuellen Knoten abgerufen.

(placing block version of view through CMS

6
oknate

Endlich habe ich es geschafft.

Zuerst erstellen Sie einen Inhaltstyp für die Elemente (in diesem Fall sted/ place). Anschließend erstellen oder bearbeiten Sie den Inhaltstyp, in dem die relevanten Elemente angezeigt werden sollen (in diesem Fall Artikel). Für die Artikel fügen Sie ein Referenzfeld hinzu. Der Type of item to reference Ist content und der zu referenzierende Inhaltstyp ist Ihre Elemente Inhaltstyp. (Ich habe unbegrenzte Werte für das Feld gewählt).

Erstellen Sie eine Ansicht , die Inhalte vom Typ Ihre Artikel in einem Block anzeigt, und wählen Sie das gewünschte Styling (z. B. Raster) , unformatierte Liste, benutzerdefinierter Stil ...). In der Vorschau der Ansicht werden jetzt alle Ihre Elemente angezeigt. Bearbeiten Sie einen der Artikel so, dass er auf einen/einige der Artikel verweist (nicht auf alle). Fügen Sie den Ansichtsblock hinzu, der mit den Artikeln angezeigt werden soll .

Bearbeiten Sie die Ansicht so, dass nur die relevanten Elemente angezeigt werden:

(fortgeschritten) Beziehungen add: Content using field_your_refernce_field - (Relate each Content with a field_your_refernce_field set to the content.).

(erweitert) Kontextfilter add: CONTENT ID. Bearbeiten Sie den Kontextfilter (INHALTS-ID) When the filter value is NOT availableProvide default valueContent ID from URL Und (oben) "Beziehung:" wählen Sie field_your_refernce_field

(Fügen Sie für die Ansichtsvorschau die ID Ihres Testartikels in Preview with contextual filters: Ein, um das Ergebnis anzuzeigen.)

(enter image description here

6
eye-wonder