Перегляди за допомогою SQL визначають вузли для відображення. На жаль, з міркувань продуктивності для Drupal просто не було б можливо здійснити node_load на всіх потенційних кандидатах, а потім зателефонувати на гачку_node_access на кожному з них. Уявіть подання, на якому зображені тисячі вузлів (особливо при використанні пейджера). Якщо логіка не виконується в SQL, то пейджери матимуть дуже незвичну функціональність, тому Drupal змушує вас робити це як згаданий рік, використовуючи записи доступу у вашій базі даних.
Зробити access_records - це набагато більша робота, але змусить її працювати з SQL. Тому я рекомендую використовувати існуючий модуль node_access, щоб вирішити свою функціональність, де це можливо, тому що він, ймовірно, буде реалізований за допомогою записів доступу і, таким чином, буде працювати з видами.
До речі, записи записів доступу зберігаються в таблиці node_access, як показано нижче:
Через коментарі до кожного стовпця ви можете зрозуміти їх призначення. Подумайте про царину як про систему, що використовується для доступу до вузлів, і gid як групу в царині. Ця група може мати дозволи на перегляд, оновлення та видалення. Взагалі кожен модуль node_access визначає одну або кілька областей (іноді кілька модулів node_access також можуть працювати паралельно). У кожної сфери користувач має один або кілька дітлахів.
У Drupal до всіх запитів, що мають тег "node_access", автоматично буде додано певну логіку. Перегляньте документацію, щоб дізнатися більше про теги. Ця спеціальна логіка приєднується до таблиці "node_access" для кожної області і додає умову, що коли "gid" дорівнює одному з застосованих до користувача гідів, користувач має відповідний дозвіл.
Ця вся система дозволяє всім запитам правильно обробляти node_access, навіть рахувати запити і т. Д. Вона дуже потужна, але має більш високу криву навчання, що просто простий_ук_нод_аксес. По можливості, використання наявного модуля node_access може врятувати вас від усієї головного болю.
hook_node_access()
, слід зробити лише щось: змінити код модуля Views.