it-swarm.com.de

Wie überprüfe ich, ob die aktuelle Seite ein 404-Fehler eines Moduls / einer Vorlage ist?

Wie kann in D7 überprüft werden, ob die aktuelle Seite einen 404-Fehler von einem Modul/einer Vorlage zurückgibt?

21
Andrey Rudenko

In Drupal 7) können Sie drupal_get_http_header() verwenden.

Verwenden Sie diesen Code in der Datei template.php.

$status = drupal_get_http_header("status");
if ($status === '404 Not Found'){
  // Do something.
}

In Drupal 8) können Sie den folgenden Code in einem Hook verwenden.

$route_name = \Drupal::request()->attributes->get('_route');
if ('system.404' === $route_name) {
  // Do something.
}
34
fzmaster

Drupal 8.2.x:

Leider funktioniert drupal_get_http_header ("status") nicht mehr.

Versuchen:

$status = \Drupal::requestStack()->getCurrentRequest()->attributes->get('exception');
if ($status && $status->getStatusCode() == 404){

}

Hier wird darüber diskutiert: https://www.drupal.org/node/196927

11
Gervase

Dies ist der einfachste Weg, um Zugriff verweigert (403) und Seite nicht gefunden (404) in Drupal 7) zu erkennen.

// get the menu router item for the current page
$router_item = menu_get_item();

// if there is no router item, this page is not found
$is_page_not_found_404 = empty($router_item);

// if 'access' is empty for the router item, access is denied
$is_access_denied_403 = empty($router_item['access']);
4
Lindsay