2010-07-14 79 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