2011-05-02 76 views
3

我在drupal 7上构建了一个管理系统。我不允许匿名用户查看发布的内容(出于显而易见的原因),但我想让他们查看只有一个页面,主页,它有一个欢迎消息和登录表单。我怎样才能做到这一点?Drupal 7:只允许匿名访问者的主页

回答

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文件,如果你只是从另一个模块开辟一个看他们怎么看。

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

+0

我不知道如何制作一个模块,但我会试一试。非常感谢! – Janoma 2011-05-22 22:20:23

+1

这真的很容易,只需创建一个文件夹,其中包含您希望为您的模块命名的名称...“MySiteMod”,然后在该文件夹内创建一个名为“MySiteMod.module”的文件,然后将上面的代码复制到该文件中在''标签之间,将所有“mymodule”实例替换为“MySiteMod”,然后再创建一个名为“MySiteMod.info”的文件,正如我刚才所说的,只是查看另一个模块信息文件来了解这些文件的写法,需要定义名称和版本号的前几行 – Trey 2011-05-23 21:57:19

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确认没有核心方式来做到这一点。 (您可以使用节点访问或前台页面模块,但我没有尝试它们,因为它太轻巧了。)

0

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