Drupal 7:只允许匿名访问者的主页

时间:2011-05-02 21:54:06

标签: drupal-7

我正在使用drupal 7构建一个管理系统。我不允许匿名用户查看已发布的内容(原因很明显),但我想让他们只查看一个页面,即主页,有欢迎信息和登录表格。我怎么能这样做?

3 个答案:

答案 0 :(得分:3)

我通常为需要我使用的模块不提供的自定义功能的网站构建一个小模块,在这种情况下,您只需在模块文件中构建一个包含以下内容的模块。

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']);
}

你需要一个带有drupal的模块的.info文件,没有多余的装饰,如果你只是从另一个模块中打开一个模块来看看它们的样子,那就非常自我解释了。

以这种方式处理它的好处是可以灵活地向同一模块添加其他自定义功能。

答案 1 :(得分:2)

我喜欢Trey的回答,但你可以更简单地做到这一点。

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();
}

这为您提供了所有用户的空白页面。然后创建一个仅显示给匿名用户的块,并且只显示在首页(“”)上。根据需要为其他角色创建其他块。这样,您就不需要任何特殊命令来编辑它。

感谢Trey确认没有核心方法可以做到这一点。 (您可以使用节点访问或首页模块,但我没有尝试它们,因为它非常轻量级。)

答案 2 :(得分:0)

我认为this module可以满足您的需求。有了它,您可以启用每个内容访问设置,以便您可以自定义每个内容节点的访问权限。