Contenttype A und Contenttype B über ID verbinden
am 19.06.2016 - 19:06 Uhr in
Hallo Forum,
dies ist mein erster Post hier, daher ersteinmal ein freundliches Hallo in die Runde :)
Mein Problem ist folgendes: ich habe eine Tabelle, die ich über einen View erzeuge. Dort werden nodes aus Contenttype A ausgegeben.
Nun will ich eine neue Spalte hinzufügen, welche passende Werte aus Contenttype B enthält.
Beide Contenttypes haben das gemeinsame Feld spkid. Ich weiß schon, dass ich mit Relations und Contextual Filters arbeiten muss. Aber bei den konkreten Einstellungen komm ich nicht weiter.
Wie kann ich einen Contextual Filter hinzufügen, der die Daten aus Contenttype B hinzufügt, wenn spkid = spkid ist?
Es soll also eine Verknüpfung über das Feld "spkid" hergestellt werden, in beiden Contenttypes verwende ich das selbe Feld "spkid".
Kann mir jemand weiterhelfen? Bin für jeden Tipp dankbar!
Ich verwende übrigens die Views Version 3.13.
Viele Grüße,
nomainstream
- Anmelden oder Registrieren um Kommentare zu schreiben
du brauchst dafür
am 19.06.2016 - 19:23 Uhr
entity, Entity_reference und entity UI.
Entity und entity UI sind in einem Modulpaket (entity) enthalten, und entity_reference ist nochmals ein Modul.
Grüße
Ronald
Hi Ronald, danke schonmal für
am 19.06.2016 - 19:35 Uhr
Hi Ronald,
danke schonmal für die Tips. Hab mir die Module installiert.
Und wie kann ich dann über die id die Contenttypes verknüpfen?
Es geht um tausende Nodes, daher kann ich nicht bei jedem händisch ein Referenzfeld befüllen...
Viele Grüße,
nomainstream
Es muss doch einen Weg geben
am 19.06.2016 - 19:38 Uhr
Es muss doch einen Weg geben die Nodes über die ID zu verknüpfen?!
Search API mit Custom Module
am 19.06.2016 - 21:29 Uhr
Mir ist das genaue Szenario noch nicht klar. Wichtig wäre vor allem auch zu wissen, ob sicher gestellt ist, daß es wirklich nur zwei Nodes mit dieser ID gibt usw. Das gemeinsam genutzte ID-Feld für zwei Content-Typen lässt sich natürlich in einer Datenbank-Abfrage verbinden. Aber Views kann von Haus nicht alle möglichen Szenarien abbilden. Bei den Relations, die im Hintergrund dann zu Tabellen Joins führen,muss es hat ein Modul geben, das Views diese Ansätze nahelegt. Das macht z.B. das erwähnte Entityreference-Modul.
In diesem Fall könnte vllt. eine kleine Individual-Programmierung Sinn machen, die Views diese besondere Situation "erklärt".
Es geht um tausende Nodes, daher kann ich nicht bei jedem händisch ein Referenzfeld befüllen...
Das muss nicht unbedingt händisch passieren. Man kann mit Rules kleine Daten-Helfer erstellen, die man wiederum mit Views Bulk Operations (VBO) dann massenhaft anwenden kann.
Bei tausenden Node sollte man vllt. anfangen zu überlegen, daß eine Views-Lösung zur Anzeige nicht direkt auf der Datenbank aufsetzen sollte. Hier wäre dann eine Lösung auf der Basis von Search API sinnvoll, auf die dann Views zugreifen kann. Allerdings nur zur Anzeige der Daten und nicht zur komplexen Suche in den Daten aus dem SAerach API Suchindex.
Das Problem des Daten-Joins wäre damit in den Indexierungsvorgang verlegt müsste dann aber auch mit einer kleineren Programmierung in einem Custom Modul geschehen (das habe ich schon häufiger gemacht). Damit kann dann zeitgleich die besondere Anforderung erfüllen und schon mal den ersten Schritt zu einer performanteren Strategie. Diese könnte man dann bei Bedarf später auch auf Apache Solr als Such Backend für den Index erweitern und wäre dabei bei einer Highperformance Lösung.
# DrupalCenter-Moderator # https://www.drupal.org/u/c-logemann
# CTO der Nodegard GmbH: Tech. Concepts | Security + Availability Operations / Wir unterstützen IT-Abteilungen, Agenturen, Freiberufler:innen
Hallo C_logemann,danke für
am 19.06.2016 - 21:50 Uhr
Hallo C_logemann,
danke für Deine Tips, das hat mich schon weitergebracht.
Das genaue Szenario sieht so aus, dass es von Contenttype B jeweils mehrere Nodes gibt, die über das Feld spkid auf EINE Node von Contenttype A verweisen.
Genauer gesagt gibt es genau 4 Nodes von CT B, die auf A verweisen. Diese 4 möchte ich in je einer Spalte in der Tabelle darstellen.
Der Hinweis auf das Rules Module und Views Bulk Operations ist sehr hilfreich, das werde ich mir jeweils genauer angucken.
Bezüglich der Performance ist es so, dass auf der Website nur jeweils maximal ca 100 Zeilen der Tabelle geladen werden. Daher hoffe ich, dass Views von der Performance her dafür ausreicht.
Vielen Dank für die Hinweise bisher.
Viele Grüße,
nomainstream
Wie einen View mit allen referenzierten Nodes erstellen?
am 24.06.2016 - 17:45 Uhr
Hallo,
C_Logemann, Dein Tipp
Das muss nicht unbedingt händisch passieren. Man kann mit Rules kleine Daten-Helfer erstellen, die man wiederum mit Views Bulk Operations (VBO) dann massenhaft anwenden kann.
hat mich sehr weitergebracht. Ich habe nach 3 Tagen Tutorials gucken & lesen mir zwei Rule Components erstellen können, die mittels einem VBO jeder passenden Node von Contenttype B eine Entity Reference auf Contenttype A erstellen. Leider ist die Berechnung offenbar aufwendig und es wird wohl noch ein paar Tage dauern, bis alle 6000 Nodes berechnet sind :D Aber das macht nichts.
Meine Frage ist jetzt im Grunde wieder die Ausgangsfrage: wie kann ich mir einen View erstellen, der alle Nodes von CT A in einer Tabelle ausgibt und dazu die passenden Nodes von CT B in 4 Spalten anzeigt?
Ich habe es schon hingekriegt, dass EINE Node von CT B angezeigt wird. Wie schaffe ich es, dass die weiteren 3 in je einer Spalte aufgeführt werden? Ich dachte ich könnte das Feld noch 3 mal in dem View anlegen und dafür je eine neue Relationship erstellen und dort einen Offset von 1,2 und 3 einstellen, aber ich habe leider keine entsprechende Funktion gefunden. Weiß jemand dazu Rat? Würde mich über jeden Tip freuen.
Viele Grüße,
nomainstream
Ist gelöst
am 24.06.2016 - 18:48 Uhr
Ich habe nicht gesehen, dass schon jeweils alle Nodes vom CT B ausgegeben werden, in einzelnen Zeilen der Tabelle. Durch Gruppierung werde ich das dann hinkriegen.
Vielen Dank nochmal für die super Tips und die schnelle Antwort am Sonntag. Das hier scheint ein super Forum zu sein :)
im view das feld spkid
am 26.06.2016 - 04:52 Uhr
im view das feld spkid hinzufügen und ggf. ausblenden. dann einen zweiten view bauen mit filter contenttype b und spkid als kontextfilter.
diesen view im ersten view einbinden skipid übergeben, fertig
C.A.W. Webdesign
Hallo caw, danke für den Tip.
am 15.07.2016 - 17:13 Uhr
Hallo caw, danke für den Tip. Hab es so hingekriegt, gut zu wissen, dass es auch diese Möglichkeit gibt.
Ich habe mich dann allerdings noch weiter mit dem Rules Modul befasst und mir eine Rule entwickelt, die mir nun die beiden Contenttypes in einen Contenttype zusammenfasst, zugunsten der Performance der Website.
Viele Grüße,
nomainstream