1

我们在使用 Drupal 时都会遇到错误——其中大部分都很容易修复。然而,有些并不那么容易修复并且需要花费数小时的挖掘,即使该网站可以正常处理错误。

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

如果没有办法做到这一点,是否可以分配一个 display:none; 到父元素(下面这种情况下的错误“div”)如果 - 例如 - 错误字符串="Warning: Invalid argument supplied for foreach() in element_children() (line 6282 of /var/www/html/includes/common.inc)."使用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>

谢谢您的帮助

4

2 回答 2

5

使用 CSS 隐藏错误消息是一个非常非常非常糟糕的主意。相反,您应该通过转到Administration » Configuration » Development » Logging and errors并将错误消息显示none来关闭屏幕错误报告。

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

于 2012-06-21T07:57:51.370 回答
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 样式隐藏消息。

于 2012-06-21T08:07:01.537 回答