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

Drupal 7 Drupal 7:只允许匿名访问者访问主页,drupal-7,Drupal 7,我正在Drupal7上构建一个管理系统。我不允许匿名用户查看已发布的内容(出于明显的原因),但我希望允许他们只查看一个页面,即主页,其中包含欢迎信息和登录表单。我该怎么做呢?我通常为需要自定义功能的站点构建一个小模块,而我使用的模块不提供自定义功能,在这种情况下,您只需在模块文件中使用以下内容构建一个模块即可 mymodule_menu(){ $items['homepage']=array( 'title' => 'Home' 'page callback' =>

我正在Drupal7上构建一个管理系统。我不允许匿名用户查看已发布的内容(出于明显的原因),但我希望允许他们只查看一个页面,即主页,其中包含欢迎信息和登录表单。我该怎么做呢?

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

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文件,没有虚饰,如果您只是从另一个模块打开一个文件来查看它们的外观,那么它就很容易解释了


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

我喜欢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确认没有核心方法可以做到这一点。(您可以使用节点访问或首页模块,但我没有尝试它们,因为这太轻量级了。)

我认为可以提供您所需要的。使用它,您可以启用每内容访问设置,因此您可以自定义每个内容节点的访问。

我不知道如何制作模块,但我会尝试一下。谢谢!这真的很简单,只需创建一个文件夹,其中包含您希望为模块指定的名称。。。说“MySiteMod”,然后在该文件夹中创建一个名为“MySiteMod.module”的文件,然后在
标记之间复制该文件中的上述代码,将“mymodule”的所有实例替换为“MySiteMod”,然后再创建一个名为“MySiteMod.info”的文件,正如我所说的,只需查看另一个模块信息文件,看看它们是如何编写的,您只需要定义名称和版本号等的前几行。