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