Без хакинга никак. Часть 1

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

Аватар пользователя Sinkora Sinkora 14 августа 2010 в 19:13

Необходимо сделать на сайте возможность для авторизованных пользователей просматривать материалы со статусом 0.

Самый простой способ - это заменить в функции node_access() следующую строчку:
if ($op == 'view' && $account->uid == $node->uid && $account->uid != 0) {

на:
if ($op == 'view' && $account->uid) {

Но можно сделать подобные хуки:

function my_hacks_menu_alter(&$items) {
  $items['node/%node']['access callback'] = 'my_hacks_node_access';
}
function my_hacks_node_access($op, $node) {
  global $user;
  if (node_access($op, $node) || ($op == 'view' && $user->uid)) {
    return TRUE;
  }
  else {
    return FALSE;
  }
}

Но для сложного сайта, с большим количеством ограничений на права, очень неудобно писать хуки, алерты и прочие надстройки. Иначе, если мы будем наращивать функционал подобным образом, то в нем будет с каждым днем сложнее ориентироваться.

Т.е. вывод один: без хакинга никак.

Комментарии

Аватар пользователя xxandeadxx xxandeadxx 14 августа 2010 в 19:34

странный вывод. делайте материалы опубликованными, заведите новое поле "показывать анонимам", и навешивайте проверку доступа по нему

Аватар пользователя Sinkora Sinkora 14 августа 2010 в 19:39

"xxandeadxx" wrote:
странный вывод. делайте материалы опубликованными, заведите новое поле "показывать анонимам", и навешивайте проверяйте доступ по нему

Не, задача именно другая:
"Sinkora" wrote:
Необходимо сделать на сайте возможность для авторизованных пользователей просматривать материалы со статусом 0.

Т.е. статус 0 должен оставаться. В таком случае все материалы с нулевым статусом не будут выводиться ни в каких списках сайта. Но будет отдельный раздел "Ожидают модерации", где как раз и будут выводиться материалы со статусом 0, и их смогут просматривать все авторизованные пользователи.

Аватар пользователя Sinkora Sinkora 15 августа 2010 в 4:22

"Crea" wrote:
Workflow + workflow_access помогут. Для таких случаев родные статусы друпала бестолковые.

Спасибо, но это исключается.