2010-07-14 108 views

回答

3

这是可能的。以下代码可以在Drupal返回拒绝访问页面时添加CSS文件。
请记住,当Drupal返回这样的错误时,浏览器中显示的URL不会改变;在示例中,如果我试图访问/admin/content,并且我不允许访问该页面,则显示的URL不会更改。您需要检查Drupal输出的头文件,以验证它是否输出访问被拒绝头文件。

function custom_module_preprocess_page(&$variables) { 
    if (preg_match('@HTTP/1\.[01]\x20+403[^a-zA-Z0-9]@', drupal_get_headers())) { 
    $variables['css'] = drupal_add_css($css_file_to_add); 
    $variables['styles'] = drupal_get_css(); 
    } 
} 

Drupal 7的等价物如下。

function custom_module_preprocess_page(&$variables) { 
    if (drupal_get_http_header('Status') == '403 Forbidden') { 
    $variables['css'] = drupal_add_css($css_file_to_add); 
    $variables['styles'] = drupal_get_css(); 
    } 
} 

相同的代码可以用于由主题实现的预处理功能。

+0

谢谢,我会给你一个镜头。 – Kevin 2010-07-15 02:49:13

+0

与我在此编写的代码类似的代码用于现有的第三方模块;区别在于模块(Nodewords)添加元标记,但检测Drupal是否输出访问被拒绝页面的代码是相同的,并且它是由Drupal安全团队的成员建议的,以解决报告的安全问题该模块。 – kiamlaluno 2010-07-15 02:53:53

+0

工作。除了我必须改为使用themename_preprocess_page。 – Kevin 2010-07-15 13:38:06