views 3, og, calendar wie den Filter und noedrelation richtig setzen?
am 10.06.2014 - 12:17 Uhr in
Hallo,
hoffe hier ist ein views Speziqlist dabei!???
Mein Problem:
Ich kann entweder meine eigenen Kalendereinträge anzeigen lassen, oder die der Gruppen. Ich brauche aber beide Eintragungen in einem Kalender.
Fall 1 zeigt nur eigene Einträge an:
Es wird dabei ein relationship mit Author gebildet und dann ein Filter zu "user current":
Der query sieht dann folgendermassen aus, wobei die 1 für den superadmin steht:
(lots of date_fields ...)
'node' AS field_data_field_date_node_entity_type
FROM
{node} node
LEFT JOIN {users} users_node ON node.uid = users_node.uid
LEFT JOIN {field_data_field_date} field_data_field_date ON node.nid = field_data_field_date.entity_id AND (field_data_field_date.entity_type = 'node' AND field_data_field_date.deleted = '0')
WHERE (( (node.status = '1') )AND( (DATE_FORMAT(ADDTIME(field_data_field_date.field_date_value2, SEC_TO_TIME(field_data_field_date.field_date_offset)), '%Y-%m-%d') >= '2014-06-09' AND DATE_FORMAT(ADDTIME(field_data_field_date.field_date_value, SEC_TO_TIME(field_data_field_date.field_date_offset)), '%Y-%m-%d') <= '2014-06-09') )AND((( (users_node.uid = '1') ))))
ORDER BY field_data_field_date_field_date_value ASCResultat: Kalenderview mit allen Einträgen von user 1. So weit so gut.
Fall 2 stört mich schon, da der contextual filter unverändert ist, aber trotzdem schon die og_membership berücksichtigt, die nur in der relationship gesetzt wurde!
Hier der contextual filter date, um dem Kalender die notwendigen Argumente zu geben:
- do not use a relationship
- When the filter value is NOT in the URL: provide default value "current date"
- Add multiple value identifier: YES
- date fields: Content: date - start date (field_date)
- method: OR;Hier die Relationship, die zu den normalen left joins führt:

Die Abfrage:
(lots of date_fields ...) 'node' AS field_data_field_date_node_entity_type
FROM
{node} node
LEFT JOIN {users} users_node ON node.uid = users_node.uid
LEFT JOIN {og_membership} og_membership ON node.nid = og_membership.etid AND og_membership.entity_type = 'node'
LEFT JOIN {node} node_og_membership ON og_membership.gid = node_og_membership.nid AND og_membership.group_type = 'node'
LEFT JOIN {field_data_field_date} field_data_field_date ON node.nid = field_data_field_date.entity_id AND (field_data_field_date.entity_type = 'node' AND field_data_field_date.deleted = '0')
WHERE (( (node.status = '1') )AND( (DATE_FORMAT(ADDTIME(field_data_field_date.field_date_value2, SEC_TO_TIME(field_data_field_date.field_date_offset)), '%Y-%m-%d') >= '2014-06-09' AND DATE_FORMAT(ADDTIME(field_data_field_date.field_date_value, SEC_TO_TIME(field_data_field_date.field_date_offset)), '%Y-%m-%d') <= '2014-06-09') ))
ORDER BY field_data_field_date_field_date_value ASCErkenntnis: Einige left joins gesetzt, Abfrage nach node.uid ist weg.
Meine Erwartung:
Jetzt mûssten eigentlich alle dates angezeigt werden, unabhängig von der node_relationship, weil der Filter jetzt nur noch abfragt, dass die node veröffentlicht sein soll. Aber nix da, der usr sieht nur die nodes bei deren Gruppe er Mitglied ist, ohne zusätzlichen Filter.
Also habe ich 2 Fragen:
Interpretiere ich den left join falsch? Dacht immer es heisst suche alle nodes und zusätzliche Abhgikeiten in diesem Fall mit der Referenz group_ref der node.
Muss ich um sowohl die nodes ohne Gruppe eines users als auch die dates mit Guppenzugehörigkeit in einem hook_query_alter schreiben. Und was setze ich dann statt left join?
Vielen Dank vorab,
maen
| Anhang | Größe |
|---|---|
| Calendar_2_og_membership.png | 49.03 KB |
- Anmelden oder Registrieren um Kommentare zu schreiben

Neue Kommentare
vor 2 Tagen 23 Stunden
vor 3 Tagen 18 Stunden
vor 4 Tagen 12 Stunden
vor 1 Woche 1 Tag
vor 1 Woche 2 Tagen
vor 1 Woche 6 Tagen
vor 1 Woche 6 Tagen
vor 1 Woche 6 Tagen
vor 4 Wochen 2 Tagen
vor 4 Wochen 3 Tagen