Разные ноды по одному адресу в зависимости от роли

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

Аватар пользователя andrey77 andrey77 17 ноября 2007 в 20:31

На главной странице сайта список новостей. Как сделать чтобы вместо него была другая страница с приветствием пока не залогинишься?

Комментарии

Аватар пользователя Gedler Gedler 18 ноября 2007 в 5:52

Самый простой вариант:
Запретить доступ к материалам сайта для незарегистрированных пользователей.
Информацию с приветсвием реализовать через блок с показом только для роли гостей.

Аватар пользователя andrey77 andrey77 18 ноября 2007 в 13:35

Да, это то, что нужно, спасибо. Только когда я вывожу блок с приветствием, он показывается под надписью
Доступ запрещен
Зарегистрируйтесь, чтобы получить доступ к этой странице.
Если бы еще от этой надписи избавиться, было бы супер!

Аватар пользователя Gedler Gedler 18 ноября 2007 в 19:15

доступ запрещен опять же в лоб можно решить просто переопределив в переводах (там есть пункт управление строками)
еще по теме доступа к материалам тут подымался вопрос: http://drupal.ru/node/7202

Аватар пользователя andrey77 andrey77 19 ноября 2007 в 0:05

Проблема решена так:
1. По совету Gedler'а: Запретить доступ к материалам сайта для незарегистрированных пользователей. Информацию с приветсвием реализовать через блок с показом только для роли гостей.
2. Приветственный блок хотел настроить для показа только на странице front, но не вышло. Так и не понял почему, сделал наоборот: на всех, кроме указанных, а это всего лишь
user
user/*
3. От надписи избавлялся так. В includes/common.inc определена функция, которая выводит эту надпись. Исходный текст такой:
function drupal_access_denied() {
drupal_set_header('HTTP/1.1 403 Forbidden');
watchdog('access denied', check_plain($_GET['q']), WATCHDOG_WARNING);

// Keep old path for reference
if (!isset($_REQUEST['destination'])) {
$_REQUEST['destination'] = $_GET['q'];
}

$path = drupal_get_normal_path(variable_get('site_403', ''));
if ($path && $path != $_GET['q']) {
menu_set_active_item($path);
$return = menu_execute_active_handler();
}
else {
// Redirect to a non-existent menu item to make possible tabs disappear.
menu_set_active_item('');
}

if (empty($return)) {
drupal_set_title(t('Access denied'));
$return = t('You are not authorized to access this page.');
}
print theme('page', $return);
}

Исправленный вариант:

function drupal_access_denied() {
drupal_set_header('HTTP/1.1 403 Forbidden');
watchdog('access denied', check_plain($_GET['q']), WATCHDOG_WARNING);

$forbidden_path = $_GET['q'];

// Keep old path for reference
if (!isset($_REQUEST['destination'])) {
$_REQUEST['destination'] = $_GET['q'];
}

$path = drupal_get_normal_path(variable_get('site_403', ''));
if ($path && $path != $_GET['q']) {
menu_set_active_item($path);
$return = menu_execute_active_handler();
}
else {
// Redirect to a non-existent menu item to make possible tabs disappear.
menu_set_active_item('');
}

if (empty($return) && $forbidden_path != 'node') {
drupal_set_title(t('Access denied'));
$return = t('You are not authorized to access this page.');
}
print theme('page', $return);
}

Здесь предполагается что главная страница раз и навсегда определена как node.

Если кто придумает способ лучше - пишите.