Views: Anzeige des Inhalts eines Node- Content-Types, dem mindestens zwei Felder mit einer beliebigen Anzahl von Werten zugeordn
am 20.12.2013 - 16:47 Uhr in
Ich möchte mit Views den Inhalt bestimmter Nodes anzeigen lassen, dessen Node-Content-Type-Definition mindestens zwei Felder enthält, für die beliebig viele Werte eingegeben werden können. Für jedes dieser Felder erstellt Drupal eine eigene Tabelle. Bei Eingabe von mehr als einem Wert können die Werte durch einen automatisch generierten Delta-Wert unterschieden werden. Diese Struktur bringt Probleme mit sich, wenn mit Views der Content dieser Node zusammen mit dem Content der zugeordneten Felder angezeigt werden soll. In der Ausgabe-Tabelle ist dann jeder Wert der einen Tabelle mit jedem Wert der anderen Tabelle verbunden. Es sollen aber nur die Werte mit demselben Delta-Wert angezeigt werden. Im SQL-Statement ist erkennbar, dass Views die beiden Tabellen jeweils mit einem ‚leftjoin‘ mit der Node-Tabelle verknüpft. Eine Verbindung zwischen den beiden Fiels-Tabellen fehlt allerdings! Hier der entscheidende Teil des SQL-Statements:
SELECT DISTINCT ...
FROM node
LEFT JOIN
field_data_field_recurringevent_date ON node.nid = field_data_field_recurringevent_date.entity_id
AND (field_data_field_recurringevent_date.entity_type = 'node'
AND field_data_field_recurringevent_date.deleted = '0')
LEFT JOIN
field_data_field_recurringevent_data_divers ON node.nid = field_data_field_recurringevent_data_divers.entity_id
AND (field_data_field_recurringevent_data_divers.entity_type = 'node'
AND field_data_field_recurringevent_data_divers.deleted = '0')
WHERE ...
Wenn ich dieses Statement um folgende Zeile ergänzen könnte, wäre mein Problem gelöst:
field_data_field_recurringevent_date.delta= field_data_field_recurringevent_data_divers.delta
Ich habe zwei Lösungsansätze ausprobiert:
> Mit Hilfe von php einen Filter hinzufügen. Das hat allerdings ab einer bestimmten Menge von Werten ein Memory-Overflow-Problem zu Folge.
> Dann habe ich versucht, das SQL-Statement direkt mit Hilfe des hook_views_query_alter zu verändern, aber es war mir bisher nicht möglich den Code in der richtigen Syntax zu verändern. Ich habe aber nur Code wie diesen erhalten:
field_data_field_recurringevent_date.delta= 'field_data_field_recurringevent_data_divers.delta'. Aufgrund der Ausrufungszeichen funktioniert das Statement nicht richtig. Ich erwarte aber eigentlich, dass es möglich sein muss, das Problem auf diese Weise zu lösen, speziell durch die Verwendung von 'addjoin‘. Ich habe aber bisher keine ausreichende Dokumentation für die Verwendung von 'addjoin‘ gefunden.
Hier der Link zu einem Bild, das die ‘join’-Situation zeigt. Bisher war es mir eben nicht möglich ein Statement zu kreieren, das auch die Verbindung in der roten Ellipse korrekt berücksichtigt. Ich brauche eben eine Lösung für dieses Problem.
Ich bin dankbar für jede Form von Anregungen und Lösungen.
Viele Grüße * Peter Winkels
- Anmelden oder Registrieren um Kommentare zu schreiben

Neue Kommentare
vor 2 Wochen 3 Tagen
vor 2 Wochen 4 Tagen
vor 2 Wochen 5 Tagen
vor 3 Wochen 2 Tagen
vor 3 Wochen 2 Tagen
vor 4 Wochen 5 Stunden
vor 4 Wochen 5 Stunden
vor 4 Wochen 5 Stunden
vor 6 Wochen 3 Tagen
vor 6 Wochen 4 Tagen