Mithilfe des CCK Privacy Moduls können CCK Felder vom Autor des Beitrags als "privat" gekennzeichnet werden, sodass diese im Node für nicht berechtige Personen ausgeblendet werden. Nur Benutzer mit einer entsprechenden Berechtigung können diese Felder sehen.
Sehr praktisch ist dies zum Beispiel in Verbindung mit "Node Profile". So können beispielsweise Adressangaben vor der Öffentlichkeit verborgen werden.
Leider ist das Modul sehr einfach gehalten und bietet keine Views-Integration. Die "privatisierten" Felder werden jedoch logischerweise im View bereitgestellt, jedoch immer angezeigt, egal ob erlaubt oder nicht!
In diesem Artikel stelle ich eine Lösung vor, um dieses Problem mithilfe des PHP View Feldes aus dem Modul "Views Custom Field zu lösen.
Verwendete Module:
- CCK Privacy (http://drupal.org/project/privacy)
- Views Custom Field (http://drupal.org/project/views_customfield)
- + Views, CCK und weitere logische Voraussetzungen
Vorgehensweise:
- Privates CCK Feld dem View wie gewohnt hinzufügen, aber "Von der Anzeige ausschließen" aktivieren.
- Ein Views Custom Field: PHP dem View HINTER dem Originalfeld hinzufügen!
- Als Wert des PHP-Feldes den folgenden Code verwenden:
//Zugriff pruefen
if(!privacy_is_private('field_uprofile_name', $data->node_users_nid)){
echo $data->node_users_node_data_field_uprofile_name_field_uprofile_name_value;
}
?>
Die korrekten Variablennamen könnt ihr herausfinden, indem ihr das Feld zunächst mit einem
var_dump($data);
?>
abfeuert.
Achtung: Den Namen des CCK-Feldes entnehmt ihr am besten der Feldübersicht ("Felder anzeigen") im Node-Type.
Die oberhalb dargestellten Bezeichner einfach gegen eure austauschen, das war's!
Nun wird der Inhalt des Feldes nur noch angezeigt, wenn es öffentlich ist. Achtung: Dies gilt für alle Rollen. Um die Bedingungen noch weiter zu verfeinern, sind zusätzliche Arbeiten nötig. Dies soll aber nicht Teil des Artikels sein.
Screenshots habe ich als Beispiel angehängt.
Viel Spaß damit!