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:
MYMODULEa hookot implementáló modul neve.MYVIEWNAMEa 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.
MYFIELDCOLLECTIONNAMEa 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

