2010-07-14 4 views

Répondre

3

C'est possible. Le code suivant peut ajouter un fichier CSS lorsque Drupal renvoie une page d'accès refusé. N'oubliez pas que lorsque Drupal renvoie une telle erreur, l'URL affichée dans le navigateur ne change pas; par exemple, si j'essaie d'accéder à /admin/content, et que je ne suis pas autorisé à accéder à cette page, l'URL affichée ne change pas. Vous devez vérifier la sortie des en-têtes de Drupal pour vérifier si elle sort l'en-tête d'accès refusé.

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(); 
    } 
} 

L'équivalent pour Drupal 7 est le suivant.

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(); 
    } 
} 

Le même code peut être utilisé pour une fonction de prétraitement implémentée par un thème.

+0

Merci, je vais donner un coup de feu. – Kevin

+0

Un code similaire à celui que j'ai écrit ici est utilisé dans un module tiers existant; la différence est que le module (Nodewords) ajoute des balises META, mais le code pour détecter si Drupal a sorti une page d'accès refusé est le même, et un membre de l'équipe de sécurité Drupal a suggéré de résoudre un problème de sécurité signalé pour ce module. – kiamlaluno

+0

A travaillé. Sauf que je devais faire themename_preprocess_page à la place. – Kevin