Мне нужен сложный доступ к узлу в Drupal, и я решил поработать с моим собственным модулем. Какие крючки мне нужно посмотреть, чтобы разрешить доступ к узлам. У вас есть примеры.Доступ к пользовательскому узлу Drupal
ответ
Это то, что боли в Drupal 6 - hook_access
может только настроить доступ по типам узлов, созданных с помощью модуля это часть, и hook_node_access
нового в Drupal 7.
К сожалению, лучшее решение, которое я нашел для этого, - это базовый патч, который добавляет access
op к hook_nodeapi
. Детали можно найти here.
Все, что вам нужно, это hook_access
Если вы хотите сделать контроль доступа на всех узлах, это может быть сделано с немного тонкой настройки. Вы можете использовать hook_menu_alter
, чтобы добавить свою настраиваемую функцию контроля доступа в узел/узел узла. Это может выглядеть следующим образом:
function module_menu_alter($items) {
$items['node/%node']['access callback'] = 'module_node_access';
}
function module_node_access($op, $node) {
if ($special_case) {
return FALSE;
}
elseif ($special_case_2) {
return TRUE;
}
// Default, let Drupal handle it.
return return node_access($op, $node);
}
Nope. «Этот крючок позволяет узловым модулям ограничивать доступ к указанным типам узлов». Если вы пытаетесь настроить доступ к, например, типу узла CCK, 'hook_access' не будет работать в вашем настраиваемом модуле, так как ваш пользовательский модуль не определил тип узла. – ceejayoz
Неудивительно, что это не сработало, когда я попытался. – Will
Да, я потратил целый день, пытаясь заставить это работать, пока не наткнулся на объяснение причин, почему это не работает. Вы подумали бы, что это будет более заметно объяснено на этой странице документации ... – ceejayoz
Не поклонник исправления ядра. Идти, чтобы сделать какое-то серьезное мышление. – Will
Да, я тоже не поклонник этого. D7, наконец, исправляет это ** вопиющее ** упущение. – ceejayoz
Возможно, это не самая лучшая практика, но я могу использовать hook_view и возвращать что-то еще, если они не соответствуют моим условиям? – Will