Drupal 7: разрешить анонимным посетителям только домашнюю страницу - PullRequest
4 голосов
/ 03 мая 2011

Я строю систему администрирования на drupal 7. Я не разрешаю анонимным пользователям просматривать опубликованный контент (по понятным причинам), но я бы хотел, чтобы они могли просматривать только одну страницу, домашнюю страницу, которая имеет приветственное сообщение и форму входа. Как я могу это сделать?

Ответы [ 3 ]

3 голосов
/ 20 мая 2011

Обычно я создаю небольшой модуль для сайтов, требующих пользовательской функциональности, не предоставляемой модулями, которые я использую, в этом случае вы можете просто создать модуль со следующим в файле модуля:

mymodule_menu(){
  $items['homepage']=array(
    'title' => 'Home'
    'page callback' => 'mymodule_homepage',
    'access callback' => true,
    'type' => MENU CALLBACK,
  );
  $items['homepage/edit']=array(
    'title' => 'Edit Homepage'
    'page callback' => 'drupal_get_form',
    'page arguments' => array('mymodule_homepage_edit'),
    'access arguments' => array('administer site configuration'),
    'type' => MENU CALLBACK,
  );
}
function mymodule_homepage(){
  return variable_get('homepage_content',''); 
}
function mymodule_homepage_edit(){
  $form['body']=array(
    '#type' => 'textfield',
    '#title' => 'Body',
  );
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => 'Submit
  );
}
function mymodule_homepage_edit_submit($form, $form_state=array()){
  variable_set('homepage_content',$form_state['values']['body']);
}

вам нужно.info-файл для модуля с drupal, без излишеств, самоочевидно, если вы просто откроете один из другого модуля, чтобы посмотреть, как они выглядят.

Преимущество такой обработки заключается в гибкости добавления другихнастраиваемая функциональность этого же модуля в дальнейшем.

2 голосов
/ 06 февраля 2012

Мне нравится ответ Трея, но вы можете сделать это еще проще.

function mymodule_menu(){
  $items['homepage']=array(
    'title' => 'Home',
    'page callback' => 'mymodule_homepage',
    'access callback' => TRUE,
  );
}
function mymodule_homepage(){
  drupal_set_title(t('Some welcoming title'));
  return array();
}

Это дает вам пустую страницу для всех пользователей. Затем создайте блок, показанный только анонимным пользователям и только на первой странице (""). При необходимости создайте другие блоки для других ролей. Таким образом, вам не нужны никакие специальные команды для редактирования.

Спасибо, Трей, за подтверждение того, что не существует основного способа сделать это. (Вы можете использовать доступ к узлам или модули на первой странице, но я не пробовал их, потому что это так просто.)

0 голосов
/ 13 ноября 2012

Я думаю этот модуль может предоставить то, что вам нужно. С его помощью вы можете включить индивидуальные настройки доступа к контенту, чтобы вы могли настроить доступ для каждого узла контента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...