A Views modul csak node alapú nézetekre joinolja magától a node_access táblát. Bármilyen más esetben kézzel kell gondoskodnunk arról, hogy a felhasználó csak azokat az adatokat lássa, amelyeket valóban szeretnénk.
Mi node-okhoz kapcsolt field_collectionöket listáztunk Views-zal. Ez a pár sor kód oldotta meg, hogy a node_access tábla akcióba lépjen:
/** * Implements hook_query_TAG_alter(). */ function MYMODULE_query_views_MYVIEWNAME_alter($query) { // Add a node_access join to a field_collection view. $query->addTag('node_access')->addMetaData('base_table', 'field_data_MYFIELDCOLLECTIONNAME'); _node_query_node_access_alter($query, 'entity'); }
Magyarázat:
MYMODULE
a hookot implementáló modul neve.MYVIEWNAME
a listát készítő nézet gépi neve.- A hook azért fut le, mert minden views query megkapja a views_MYVIEWNAME taget.
MYFIELDCOLLECTIONNAME
a node-on lévő field collection mező gépi neve.- A
_node_query_node_access_alter($query, 'entity');
hívás'entity'
argumentuma hatására a'field_data_MYFIELDCOLLECTIONNAME'
tábla az'entity_id'
oszlopánál fogva lesz joinolva a node_access táblához. Ha'nid'
oszlopunk van, akkor az'entity'
helyébe 'node'-ot kell tenni.
Technológia: Drupal 7node access