Views, görüntülenecek düğümleri belirlemek için SQL kullanır. Ne yazık ki, performans nedenleriyle Drupal'ın tüm potansiyel adaylar üzerinde bir düğüm_yüklemesi gerçekleştirmesi ve ardından hepsinin her birinde hook_node_access'i çağırması mümkün değildir. Binlerce düğümü gösteren bir görünüm düşünün (özellikle bir çağrı cihazı kullanırken). Mantık SQL'de yapılmazsa, çağrı cihazları çok olağandışı işlevselliğe sahip olur, böylece Drupal bunu veritabanınızdaki erişim kayıtlarını kullanarak belirtilen rik olarak zorlar.
Access_records yapmak adil bir miktar daha fazla iş ancak SQL ile çalışmasını sağlayacaktır. Bu nedenle, muhtemelen erişim kayıtları kullanılarak uygulanacak ve böylece görünümlerle çalışacağından, işlevselliğinizi mümkün olan her yerde çözmek için mevcut bir node_access modülünü kullanmanızı öneririm.
Erişim kayıtları aşağıda görüldüğü gibi node_access tablosunda saklanır :
Her sütun için yapılan yorumlar sayesinde amaçlarını anlayabilirsiniz. Alemi, düğüm erişimi için kullanılan sistem ve gid'i bir alem içindeki grup olarak düşünün. Bu grubun görüntüleme, güncelleme ve silme izinleri olabilir. Genel olarak her node_access modülü bir veya daha fazla alanı tanımlar (bazen birden fazla node_access modülü paralel olarak da çalışabilir). Bir kullanıcının alemlerin her birinde bir veya daha fazla gidmesi vardır.
Drupal'da "node_access" etiketine sahip tüm sorgulara otomatik olarak bazı özel mantık eklenir. Etiketleme hakkında daha fazla bilgi için belgelere bakın . Bu özel mantık, her bölge için "node_access" tablosuna katılır ve "gid" in bir kullanıcıya uygulanan gidilerden birine eşit olduğu durumda, kullanıcının uygun izne sahip olması koşulunu ekler.
Bu tüm sistem, tüm sorguların node_access'i, hatta sorguları vb. Mümkün olduğunda, mevcut bir node_access modülünü kullanmak size tüm baş ağrısını kurtarabilir.
hook_node_access()
, yapılması gereken sadece bir şey vardır: Views modülü kodunu değiştirmek için.