[gelöst]View für Block anhand Node reference

am 26.11.2014 - 17:18 Uhr in
Hallo,
ich habe das Problem, dass für einen Knoten, der ein Angebot enthält ein Block erstellt werden soll, der Telefonnummer und Emailadresse des Anbieters ausgibt.
Der Anbieter hat irgendwann das Angebot (Titel, Text, Bild, Referenz auf seine eigene Seite) erstellt.
Der Inhaltstyp Angebot enthält ein Feld Anbeiter, Feldtyp 'Node reference', Steuerelement 'Reference from URL' der auf dem erstellten Node einen Link zum Node des Anbieters erzeugt. Auf dem Node mit dem Angebot erscheint als bereits ein Link.
Nun soll aber zusätzlich ein Block eingefügt werden, der Namen, Telefon und Emailadresse des Anbieters anzeigt.
Schematisch schaut das so aus:
Node vom Inhaltstyp: Anbieter
+-- Node=100 -------------
| Anbieter:
| - Name: Josef Tester
| - Telefon: 09876 54321
| - Email: josef.tester@email.de
| - Text: ...
| - Bild: ...
+-------------------------------
Node vom Inhaltstyp: Angebot
+-------------------------------
| Angebot:
| - Titel: ...
| - Text: ...
| - Bild: ...
| - Link zum Anbieter (Node-Id=100)
|
|. .+--- Block -----
|. .| Telefon: 09876 54321
|. .| Email: josef.tester@email.de
|. .+-------------------
|
+-------------------------------
Die Frage ist nun, wie kann eine View erstellt werden, welche diesen Block erzeugt?
Ich drehe mich momentan im Kreis und würde mich freuen, wenn mir jemand helfen könnte,
Vielen Dank und viele Grüße
- Anmelden oder Registrieren um Kommentare zu schreiben
Ein Block kann keine
am 26.11.2014 - 17:37 Uhr
Ein Block kann keine Argumente übernehmen. Das heißt für eine Block-View, sie bekommt keine Kontextfilter. Nun gibt es da aber die Möglichkeit den Kontext-Filter zu definieren und dann über den Punkt "was tun, wenn der Filter nicht vorhanden ist" zu gehen. Dort ein Standard Argumnet zur Verfügung stellen und Mittels PHP-Code sich durchzuhangeln etwa so (da mußt Du ein bischen spielen).
<?php
$node=menu_get_object(); // das ist der Node der aktellen Seite
$anbieter_node = node_load($node->FELDNAME); // hier den entsprechenden Feldnamen aus Deiner Struktur wählen
return $anbieter_node->nid;
?>
Geht auch ohne PHP per Relation
am 26.11.2014 - 23:21 Uhr
Der View, der den Block bereit stellt, sollte zunächst mal einen Node laden und zwar den aktuellen per Kontext-Filter. Dann per Relation die Werte des verknüpften Nodes hinzu laden (unter der Haube geschieht das per SQL Joins). Bei der Anzeige der gewünschten Felder die Relation auswählen und fertig.
Ergänzung: Und mit Display Suite kann man sich den Block auch noch zwischen die anderen Content-Felder laden als eine Art Pseudo-Feld.
Hat funktioniert
am 01.12.2014 - 08:30 Uhr
Vielen Dank jeweils!
@Carsten .. das hat mit einer View funktioniert. Ich hatte übersehen, dass man bei der Konfiguration des Feldes (z.B. Inhalt: Email) eine Selectbox (Relationship) hat, in der man das Referenzfeld auswählen muss.