2012-06-21 3 views
1

Nous rencontrons tous des erreurs en utilisant Drupal - dont la plupart sont faciles à corriger. Certains, cependant, ne sont pas si faciles à réparer et nécessitent de nombreuses heures de creusage, même si le site fonctionne bien avec l'erreur.Cibler des erreurs spécifiques dans Drupal 7

Ma question: Pour contourner ce problème, est-il possible que Drupal affecte une classe CSS spécifique à chaque erreur pour que vous puissiez facilement l'afficher: none?

S'il n'y a pas moyen de le faire, est-il possible d'affecter un affichage: none; à l'élément parent (l'erreur "div" dans ce cas ci-dessous) si - par exemple - la chaîne d'erreur = "Warning: Invalid argument supplied for foreach() in element_children() (line 6282 of /var/www/html/includes/common.inc)." en utilisant jQuery/Javascript?

<div class="messages error"> 
    <h2 class="element-invisible">Error message</h2> 
    <em class="placeholder">Warning</em> 
    : Invalid argument supplied for foreach() in 
    <em class="placeholder">element_children()</em> 
    (line 
    <em class="placeholder">6282</em> 
    of 
    <em class="placeholder">/var/www/html/includes/common.inc</em> 
    ). 
</div> 

Merci pour l'aide

Répondre

5

Hiding des messages d'erreur en utilisant le CSS est une idée très très très mauvais. Au lieu de cela, vous devez désactiver le rapport d'erreurs à l'écran en accédant à Administration »Configuration» Développement »Journalisation et erreurs et en tournant Messages d'erreur pour afficher à aucun. Avec cette option désactivée, personne ne verra ces erreurs mais, en tant qu'administrateur, vous pouvez les afficher vous-même en accédant à Administration »Rapports» Messages de journal récents.

0

Si vous devez modifier la manière dont ces messages sont rendus, vous devez remplacer la fonction de thème theme_status_messages(), qui contient le code suivant.

function theme_status_messages($variables) { 
    $display = $variables['display']; 
    $output = ''; 

    $status_heading = array(
    'status' => t('Status message'), 
    'error' => t('Error message'), 
    'warning' => t('Warning message'), 
); 
    foreach (drupal_get_messages($display) as $type => $messages) { 
    $output .= "<div class=\"messages $type\">\n"; 
    if (!empty($status_heading[$type])) { 
     $output .= '<h2 class="element-invisible">' . $status_heading[$type] . "</h2>\n"; 
    } 
    if (count($messages) > 1) { 
     $output .= " <ul>\n"; 
     foreach ($messages as $message) { 
     $output .= ' <li>' . $message . "</li>\n"; 
     } 
     $output .= " </ul>\n"; 
    } 
    else { 
     $output .= $messages[0]; 
    } 
    $output .= "</div>\n"; 
    } 
    return $output; 
} 

Plutôt que de se cacher des messages avec des styles CSS, je préférerais supprimer les messages de la liste des messages à afficher, si vous avez besoin de filtrer les messages spécifiques.

Questions connexes