Mẫu tùy chỉnh cho các trang lỗi 404


12

Một câu hỏi nhanh chóng ở đây! Làm cách nào để đặt chủ đề sử dụng mẫu tùy chỉnh cho các trang lỗi 404 thay vì sử dụng page.tpl?

Câu trả lời:


10

Thực hiện theo các bước sau:

  1. Tạo một trang mới bằng mô-đun Bảng (Trang trống hoặc đặt vào đó bất kỳ nội dung nào)

  2. Trong trang quản trị / config / system / site-information set Mặc định 404 (không tìm thấy) trang mới của bạn

  3. Ghi đè tệp mẫu cho trang đó (trang - error.tpl.php)

  4. Xóa tất cả các khu vực bạn không cần và đặt mã của bạn


5
Và người ta thậm chí không cần sử dụng bảng điều khiển. Mô-đun xử lý một trang hoặc nút "Trang cơ bản" đơn giản nhất cũng sẽ làm như vậy.
Mołot

2
Tại sao bạn cần một mô-đun đóng góp để tạo 404?
MrUpsidown

1
Vấn đề với việc sử dụng một nút, chẳng hạn như một trang cơ bản, là nó sẽ xuất hiện trong kết quả tìm kiếm và các danh sách liên quan đến nội dung khác, điều không mong muốn.
rooby

27

Một giải pháp khác từ cuộc thảo luận này hoạt động mà không có bảng điều khiển hoặc các mô-đun tùy chỉnh khác.

Trong thư mục chủ đề của bạn xác định vị trí template.phpvà viết mã này. Thay thế YOURTHEMEbằng tên của chủ đề của bạn:

function YOURTHEME_preprocess_page(&$vars) {
  $header = drupal_get_http_header('status'); 
  if ($header == '404 Not Found') {     
    $vars['theme_hook_suggestions'][] = 'page__404';
  }
}

Bất cứ khi nào 404 xảy ra, bạn page--404.tpl.phpsẽ được sử dụng. Nhớ đặt "-" chứ không phải "__" trong tên tệp mẫu của bạn.


Nhớ xóa bộ nhớ cache nếu bạn vừa tạo page--404.tpl.phptập tin.
Blake Erickson

Đối với 403, tiêu đề $ == '403 Bị cấm'.
Henry

điều này dường như không hoạt động trong một mô-đun, mẫu trong thư mục mô-đun không bị vượt qua. Làm thế nào để thực hiện tương tự với chức năng YOUMODULE_pre process_page (& $ vars)?
Matoeil

3

Nếu bạn muốn có một tùy chỉnh 404 trang mà không liên quan đến việc tạo ra một trang (nút), sử dụng customerror module.

Nếu bạn có trang 404 trong Drupal, thì nó sẽ hiển thị trong kết quả tìm kiếm và / hoặc danh sách Lượt xem của bạn.

Khi sử dụng mô-đun tùy biến, bạn có thể ghi đè mẫu bằng cách tạo một trang - customerror.tpl.php trong thư mục chủ đề của bạn. Cũng nhớ để xóa bộ nhớ cache của bạn sau khi bạn đã tạo tệp mẫu mới.


Điều đó có vẻ tốt, nhưng đối với những người bạn cũng sử dụng mô đun chuyển hướng thì có vẻ như họ không chơi tốt với nhau. Tôi không bao giờ có thể nhận được tùy chỉnh để hiển thị trang của nó trên những gì chuyển hướng hiển thị.
evanmcd

1
Chúng tôi sử dụng các mô-đun Redirect và Customerror cùng một lúc mà không có những vấn đề này. Nhìn qua các trang cài đặt của cả hai mô-đun, có vẻ như customerror (ngoài chức năng lỗi tùy chỉnh) còn có một tính năng để quản lý các chuyển hướng, mặc dù có giao diện thô. Nếu bạn đang sử dụng chuyển hướng (và OP thì không), thì chỉ cần tránh sử dụng cài đặt chuyển hướng tùy chỉnh và bạn không nên có bất kỳ vấn đề nào.
alexkb

0

Không giả sử bất kỳ quy ước nào có thể tồn tại trong cơ sở chủ đề của bạn, câu hỏi cuối cùng là làm thế nào tôi có thể biết chắc chắn để sử dụng tệp mẫu nào ...

Dưới đây là các bước:

  1. Tạo một cơ sở cơ bản và gọi nó như bạn muốn.
  2. Gán trang đó cho thông tin phản hồi 404 admin / config / system / site-information
  3. Kích hoạt chế độ theme_debug.
  4. Nhập một url ngu ngốc trong thanh địa chỉ của bạn.
  5. Bạn đến trang của bạn ban đầu được tạo
  6. Nhìn vào nguồn và gợi ý mẫu, bạn sẽ nhận được một cái gì đó như:nhập mô tả hình ảnh ở đây

  7. Đó là thẳng về phía trước, không có tệp tiền xử lý hoặc template.php để sửa đổi.

Bản thân tôi đã chọn một cái được đánh dấu bằng rìu, vì tôi muốn một cái gì đó trần trụi với pic khung hình đầy đủ và chỉ cần một liên kết để quay lại.


Lưu ý rằng trang cơ bản bạn đã tạo cho lỗi 404 cũng sẽ xuất hiện trong kết quả tìm kiếm dưới dạng trang nội dung.
rooby
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.