0
当用户获得访问被拒绝页面时,如何使用drupal_add_css加载特定的样式表?这可能吗?加载访问被拒绝的特定样式表
当用户获得访问被拒绝页面时,如何使用drupal_add_css加载特定的样式表?这可能吗?加载访问被拒绝的特定样式表
这是可能的。以下代码可以在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();
}
}
相同的代码可以用于由主题实现的预处理功能。
谢谢,我会给你一个镜头。 – Kevin 2010-07-15 02:49:13
与我在此编写的代码类似的代码用于现有的第三方模块;区别在于模块(Nodewords)添加元标记,但检测Drupal是否输出访问被拒绝页面的代码是相同的,并且它是由Drupal安全团队的成员建议的,以解决报告的安全问题该模块。 – kiamlaluno 2010-07-15 02:53:53
工作。除了我必须改为使用themename_preprocess_page。 – Kevin 2010-07-15 13:38:06