Wer häufiger mal einen View gebaut hat, wird auf dieses Problem gestoßen sein: Für einige Felder des Views werden keine Daten ausgegeben.
Meist liegen die Ursachen in einer fehlerhaften Konfiguration. Gerade in Drupal sind aufgrund des aspektorientierten Ansatzes Konfigurationen für das gleiche Objekt häufig in verschiedenen Modulen vorzunehmen, so dass man leicht den Überblick verliert. Meist stößt man nach einiger Zeit auf die Lösung, allerdings eben gerade nicht, wenn man verzweifelt danach sucht.
Bis dahin kann man sich mit folgendem Provisorium helfen.
Mit dem Hook hook_field_attach_view_alter schließt man die Berechtigungen für die einzelnen Felder einfach kurz. Dies ist in folgendem Snippet beispielhaft dargestellt:
function mymodule_field_attach_view_alter(&$output, $context) { $output['field_market_image']['#access'] = true; $output['field_market_image']['#field_type'] = false; $output['field_sell_or_buy']['#access'] = true; $output['field_sell_or_buy']['#field_type'] = false; $output['field_price']['#access'] = true; $output['field_price']['#field_type'] = false; $output['field_coordinates']['#access'] = true; $output['field_coordinates']['#field_type'] = false; }
Man kann damit natürlich auch komplexe Berechtigungssysteme erstellen. Dafür kann man über den Parameter $context auf Umgebungsvariablen zugreifen.
Der Hook überschreibt bestehende Einstellungen in der Konfiguration.
Besser ist es natürlich immer, die vorhandenen Einstellmöglichkeiten komplett zu nutzen. Aber wie schon gesagt, dauert es manchmal etwas, bis man alle Formulare, in denen man die Berechtigungen für darzustellende Felder einstellen kann, gefunden hat.
In meinem Fall hatte ich zunächst folgende Einstellmöglichkeiten übersehen, was dazu führte, dass ich Felder zwar als Admin, nicht aber als Anonymous user sehen konnte:
- Das Organic Groups - Modul besitzt ein eigenes Formular zur Einstellungen von Feld-Berechtigungen unter admin/config/group/permissions/node/mygroups.
- Im View sollte man außerdem unter Fields prüfen, ob es im Einstellungsformular des nicht sichtbaren Feldes eine Checkbox Bypass access checks gibt. Die existiert nicht für jedes Feld. Genau deshalb vergisst man diese Möglichkeit leicht. Bei mir existierte eine solche Checkbox für das Feld Indexed Node: OG membership from field Groups audience, welches nicht im Permission-Formular Organic Groups einstellbar war.
Ich werde diese Liste vielleicht von Zeit zu Zeit ergänzen, falls das Problem noch in anderen Kontexten auftaucht.