Переопределить hook_access() для стандартных модулей - как?

Главные вкладки

Аватар пользователя AnNik AnNik 5 октября 2008 в 12:42

Есть такая задачка - по-своему установить права доступа пользователей к стандартным типам нод, в частности к записям в блоге. Например, в зависимости от определенных условий разрешать или не разрешать пользователю редактировать ноду.

Вроде как просится тут использование hook_access(), но я что-то не понял из документации, могу ли я переопределить эту функцию для стандартных типов материалов, например, сделать собственную функцию blog_access(), не трогая стандартный blog.module, а переопределив ее где-то (в собственном дополнительном модульке, например)?

Комментарии

Аватар пользователя Ромка Ромка 5 октября 2008 в 13:57

hook_access^api и другие — используются для управления типами материалов, которые созданы текущим модулем. Для управления чужими типами используется hook_nodeapi^api

Аватар пользователя AnNik AnNik 5 октября 2008 в 14:13

"Ромка" wrote:
hook_nodeapi

Хм...
Что-то не въезжаю, как через нее можно изменить права доступа к ноде, скажем, запретить редактирование, несмотря на то, что стандартные друпаловские проверки сказали "можно"...

Аватар пользователя andypost@drupal.org andypost@drupal.org 6 октября 2008 в 17:23

Ром, для доступов используется другая подсистема hook_node_access_records^api
А в зависимости от задачи можно перекрывать меню на свой обработчик и в случае успешного исхода вызывать стандартный обработчик или выводить свое сообщение об ошибке.
В 6ке появился drupal_alter^api и для перекрытия меню hook_menu_alter^api