针对Drupal 7中的特定错误

时间:2012-06-21 07:23:12

标签: javascript jquery drupal drupal-7

我们都使用Drupal遇到错误 - 其中大部分都很容易修复。然而,有些东西不太容易修复,并且需要花费很多时间来挖掘,即使网站在错误中工作正常。

我的问题:要解决这个问题,是否可以让Drupal为每个错误分配一个特定的CSS类,以便您可以轻松地显示它:none?

如果没有办法做到这一点,是否可以分配一个display:none;如果 - 例如 - 使用jQuery / Javascript的错误字符串= "Warning: Invalid argument supplied for foreach() in element_children() (line 6282 of /var/www/html/includes/common.inc).",则为父元素(在本例中为错误“div”)?

<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>

感谢您的帮助

2 个答案:

答案 0 :(得分:5)

使用CSS隐藏错误消息是一个非常非常糟糕的主意。相反,您应该通过转到管理»配置»开发»记录和错误并将错误消息显示转到无。

关闭后,没有人会看到这些错误,但作为管理员,您可以通过转到管理»报告»最近的日志消息来自行查看。

答案 1 :(得分:0)

如果您需要更改这些消息的呈现方式,则需要覆盖theme_status_messages()主题功能,其中包含以下代码。

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

如果您需要过滤掉特定的消息,我宁愿从显示的消息列表中删除消息,而不是使用CSS样式隐藏消息。