Самый простой вариант:
Запретить доступ к материалам сайта для незарегистрированных пользователей.
Информацию с приветсвием реализовать через блок с показом только для роли гостей.
Да, это то, что нужно, спасибо. Только когда я вывожу блок с приветствием, он показывается под надписью
Доступ запрещен
Зарегистрируйтесь, чтобы получить доступ к этой странице.
Если бы еще от этой надписи избавиться, было бы супер!
доступ запрещен опять же в лоб можно решить просто переопределив в переводах (там есть пункт управление строками)
еще по теме доступа к материалам тут подымался вопрос: http://drupal.ru/node/7202
Проблема решена так:
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.
Комментарии
Самый простой вариант:
Запретить доступ к материалам сайта для незарегистрированных пользователей.
Информацию с приветсвием реализовать через блок с показом только для роли гостей.
Да, это то, что нужно, спасибо. Только когда я вывожу блок с приветствием, он показывается под надписью
Доступ запрещен
Зарегистрируйтесь, чтобы получить доступ к этой странице.
Если бы еще от этой надписи избавиться, было бы супер!
доступ запрещен опять же в лоб можно решить просто переопределив в переводах (там есть пункт управление строками)
еще по теме доступа к материалам тут подымался вопрос: http://drupal.ru/node/7202
Проблема решена так:
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.
Если кто придумает способ лучше - пишите.
нужно выставить отображать только на перечисленых страницах