[gelöst] Einzelnes Feld aus Node in Block aufrufen
am 11.11.2014 - 17:45 Uhr in
Hallo,
bin sozusagen Drupal-Neuling, aber schon jetzt von den Möglichkeiten und der Community fasziniert.
Mein Problem:
Ich möchte für statische Seiten in dem entsprechenden Inhaltstyp ein Feld "Ansprechpartner" anlegen, in dem die für diese Seite relevanten Ansprechpartner angegeben werden können. Beim Seitenaufruf soll dann in einer der Sidebars ein Block erscheinen, in dem die entsprechenden Namen mit ergänzenden Informationen angezeigt werden.
Mit Views bekomme ich zwar die Liste der Ansprechpartner, aber nicht die gewünschten ergänzenden Informationen.
Meine Idee war nun, einen neuen Block anzulegen, der per PHP den Inhalt des Feldes "Ansprechpartner" aus dem Node entsprechend aufbereitet. Aber wie kann ich den Inhalt des Feldes "Ansprechpartner" in dem Block aufrufen bzw. verarbeiten?
Trotz Suche habe ich bisher nichts Passendes gefunden, wobei ich ja befürchte, dass die Lösung vollkommen banal ist und ich nur auf dem Schlauch stehe.
Hat irgendwer 'nen Tipp?
Im Voraus herzlichen Dank!
- Anmelden oder Registrieren um Kommentare zu schreiben
Zitat: Mit Views bekomme ich
am 11.11.2014 - 22:08 Uhr
Mit Views bekomme ich zwar die Liste der Ansprechpartner, aber nicht die gewünschten ergänzenden Informationen.
Der Weg ist schon gut, Views Felder als Block auszugeben, die weiteren Informationen können über z.B. Beziehungen oder ein Referenzfeld etc. bereit gestellt werden.
Frage ist wo liegen die weiteren Infos, auch in einem Contentype? Beschreibe das bitte mal genau auf welche Infos du noch zugreifen möchtest bzw. wie du diese Felder und wo angelegt hast.
Grüße Jenna
Vielen Dank...
am 12.11.2014 - 01:17 Uhr
... erst mal für die Antwort, Jenna - so schnell hatte ich nun wirklich mit keiner Reaktion gerechnet.
Also: habe auf der Basis des Inhaltstyps "basic page" einen neuen Inhaltstyp erstellt und dort das Feld "field_contact" als Textliste mit Kontrollkästchen/Auswahlknöpfe erstellt. Werte sind Person 0, Person 1, Person 2 etc.
Im Block sollte die Darstellung dann in der Art "Wenn field_contact= Person 0 dann schreibe 'dies und das' " erfolgen. Bei "dies und das" würde es sich um den Namen, ggf. ein Bild, Telefonnummer und Link zum Kontaktformular handeln. Die Infos könnten auch ein Codeschnipsel sein, der für jede Person erstellt und mit PHP über include eingebunden wird. Aber genauso gut wäre es auch möglich, die Info in einem Contenttype abzulegen oder sogar mit PHP aus dem übergebenen Wert zu generieren.
Der allererste Gedanke war, einfach entsprechende Textblöcke anzulegen und nur auf den relevanten Seiten anzuzeigen. Da aber mal einer und mal mehrere in unterschiedlichen Kombinationen Ansprechpartner sein können, wird das spätestens ab 3 Personen unübersichtlich.
Hatte auch schon erwogen, statt des zusätzlichen Feldes mit Tags zu arbeiten, aber das ändert wohl nix, so lange ich nicht weiß, wie ich den Inhalt des Feldes oder die Tags im Block auswerten kann.
Dein Hinweis auf Views lässt mich allerdings erahnen, dass ich mich mit den Fähigkeiten dieses Moduls mal intensiver auseinandersetzen sollte, denn Beziehungen und Referenzfeld sagt mir in dem Zusammenhang noch nicht so richtig was.
Ich hoffe, das klingt jetzt nicht zu wirr... wie gesagt, ich stehe noch am Anfang der Lernkurve.
Grüße
Alex
Die Lösung liegt
am 12.11.2014 - 08:42 Uhr
in entity references und views.
Für Anfänger eines der "trockensten" Ecken Drupals.
Drupal ist hochgradig relational aufgebaut. Für die allermeisten Aufgaben gibt es kleine Module.
Da Drupal Darstellung, Inhalt und Logik gut voneinander trennt, solltest du nur im allerhöchsten Notfall PHP-Code in den Content einstreuen. Meist gibt es bessere Lösungen.
Zur Technik:
Du legst im content_type ein entity_reference_field an, das auf einen anderen content zeigt.
Nun kannst du, je nach widget, auf diesen verweisen, und diesen auch innerhalb des contents anzeigen.
Für kleinere Zusammenhänge, wie zur Klassifizierung, verwendest du am besten Taxonomy, die diese relational Beziehung automatisch erstellt.
Auch Taxonomies können Bilder enthalten ;-)
Das sind Drupalstandards und
am 12.11.2014 - 10:26 Uhr
Das sind Drupalstandards und es macht nicht viel Sinn das Grundframework gleich am Anfang per PHP zu umgehen, abgesehen von Schwachstellen die du schlimmstenfalls selbst erzeugst.
Ein Beispiel wie ich etwas umgesetzt habe bei Immobilien:
Immobilie ist ein Contenttype und Entityform https://www.drupal.org/project/entityform ist ein Formular in dem jeder Makler einmalig seine Daten eingibt.
Per Referenzfield im Contenttype greife ich auf eine vorher erstellte Views Entity Reference zu und diese ist dann im Referenzfeld des Contenttypes auswählbar, so das immer der richtige Makler zur Immo angezeigt wird.
Ebenso kann man das auch über 2 Contenttypes lösen, bei Drupal gibt es immer viele Wege.
Für Views gibt es eine hervorragende Tutorial Serie von nodeone:
http://nodeone.se/en/taming-the-beast-learn-views-with-nodeone
Gönne dir für Views 2-3 Wochen Einarbeitung, das Modul ist komplex und kann sehr vielseitig auch in Verbindung mit anderen Modulen arbeiten.
Und ein Tipp der sich immer wieder bewährt (falls die Formulare umfangreich werden sollen), teste erst mit 2-3 Feldern ob alles so funktioniert wie du es dir vorstellst, dann sparst du dir viel Arbeit falls der Ansatz verkehrt war.
Grüße Jenna
Ich bin begeistert
am 12.11.2014 - 13:37 Uhr
So schnell so fundierte Hinweise - großartig. Herzlichen Dank dafür!
Das war genau das, was ich mir erhofft hatte - ein Fingerzeig in die richtige Richtung, um nicht unnötig "basteln" zu müssen.
Mit dem Input sollte es klappen, mein Vorhaben umzusetzen - Rumprobieren und Testen gehört dazu, um das System langsam, aber sicher zu verstehen.
Vielen Dank auch für den Link zu dem Tutorial - das scheint mir in der Tat sehr hilfreich, um Views zu verstehen.
Also: Problem gelöst - Danke für Eure prompte Hilfe!