D7で、現在のページがモジュール/テンプレートから404エラーを返しているかどうかを確認する方法
Drupal 7では、 drupal_get_http_header()
を使用できます。
Template.phpファイルで、次のコードを使用します。
$status = drupal_get_http_header("status");
if ($status === '404 Not Found'){
// Do something.
}
Drupal 8では、フックで次のコードを使用できます。
$route_name = \Drupal::request()->attributes->get('_route');
if ('system.404' === $route_name) {
// Do something.
}
Drupal 8.2.x:
残念ながら、drupal_get_http_header( "status")は機能しなくなりました。
試してください:
$status = \Drupal::requestStack()->getCurrentRequest()->attributes->get('exception');
if ($status && $status->getStatusCode() == 404){
}
これについての議論があります: https://www.drupal.org/node/196927
これは、Drupal 7。
// 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']);