继续Drupal分享精神 QQ群:107748121 站长QQ:532116351【drupal交流+drupal 建站+theme制作】
登录 注册

Drupal特定页面访问权限设置,在template.php设置

经常遇到对特定的页面进行设置,但是drupal内置的就是access node 其他类型继承了这访问权限,比如要对特定的页面,不同的用户角色进行访问设置,默认的drupal模块还没有找到办法设置。除非去找drupal第三方模块来完成。
需求:需要对特定的一个页面,如果用户没有注册或者登陆就不给他看,比如是nid=2的页面,在后天添加信息的时候,这个页面内容属于机密性质的。
解决方案一:最简单的解决方法不用去写模块,只要在template.php (文件同你使用使用的主题目录在一起,如果没有可以自己新建一个)文件来设置。这个文件在前面也已经简单介绍过起功用和威力。
使用api:phptemplate_preprocess_node 主要是在这里处理,预处理函数。
drupal_set_message 函数:主要输出一段提示信息的。
drupal_access_denied 函数:看到名字就是知道,这是一个访问权限决绝时候处理N事项的函数
具体实施:

<?php
function phptemplate_preprocess_node(&$vars) {

global

$user; //定义全局用户
if(!$user->uid && $vars['node']->nid==2&&$vars['page']){//判断是否登录还有 $logged_in 这个变量,可以试试,加上一个page变量,主要是处理首页也无法访问的问题
  
drupal_set_message(t('请注册'));
   
drupal_set_message ("<a href=/user?destination=". substr( $_SERVER['REQUEST_URI'], 1 )."><b>点击这里登录或者注册</b></a>");
  
drupal_access_denied();  
}
?>

}
效果如图

如果没有加上$vars['page']也是如上图所示,点击首页会出现的以上的状况。

评论

发表新评论

此内容将保密,不会被其他人看见。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。
  • You can use BBCode tags in the text.
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.

更多关於格式化选项的信息

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.