เทมเพลตที่กำหนดเองสำหรับหน้าข้อผิดพลาด 404


12

คำถาม noob ด่วนที่นี่! วิธีการตั้งค่าชุดรูปแบบเพื่อใช้แม่แบบกำหนดเองสำหรับหน้าข้อผิดพลาด 404 แทนที่จะใช้ page.tpl?

คำตอบ:


10

ทำตามขั้นตอนเหล่านี้:

  1. สร้างหน้าใหม่โดยใช้โมดูลแผง (หน้าว่างหรือใส่เนื้อหาใด ๆ ไว้)

  2. ในหน้าการตั้งค่า admin / config / system / site-data ค่าเริ่มต้น 404 (ไม่พบ) ไปยังหน้าใหม่ของคุณ

  3. แทนที่ไฟล์เทมเพลตสำหรับหน้านั้น (หน้า - error.tpl.php)

  4. ลบภูมิภาคทั้งหมดที่คุณไม่ต้องการและใส่รหัสของคุณ


5
และหนึ่งไม่จำเป็นต้องใช้แผง โมดูลที่จัดการเพจหรือโหนด "หน้าพื้นฐาน" ที่ง่ายที่สุดก็ทำได้เช่นกัน
Mołot

2
ทำไมคุณต้องมีโมดูลที่สนับสนุนเพื่อสร้าง 404
MrUpsidown

1
ปัญหาเกี่ยวกับการใช้งานโหนดเช่นหน้าพื้นฐานคือมันจะเกิดขึ้นในผลการค้นหาและรายการอื่น ๆ ที่เกี่ยวข้องกับเนื้อหาซึ่งไม่พึงประสงค์
rooby

27

อีกวิธีหนึ่งจากการสนทนานี้ที่ทำงานโดยไม่มีพาเนลหรือโมดูลที่กำหนดเองอื่น ๆ

ในโฟลเดอร์ธีมของคุณค้นหาtemplate.phpและเขียนรหัสนี้ แทนที่YOURTHEMEด้วยชื่อธีมของคุณ:

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

เมื่อใดก็ตามที่ 404 เกิดขึ้นคุณpage--404.tpl.phpจะถูกนำไปใช้ อย่าลืมใส่ "-" ไม่ใช่ "__" ในชื่อไฟล์เทมเพลตของคุณ


อย่าลืมล้างแคชของคุณหากคุณเพิ่งสร้างpage--404.tpl.phpไฟล์
Blake Erickson

สำหรับ 403 $ header == '403 Forbidden'
เฮนรี่

ดูเหมือนจะไม่ทำงานในโมดูลเทมเพลตในโฟลเดอร์โมดูลจะไม่ถูกใช้งานมากเกินไป ทำอย่างไรกับฟังก์ชัน YOURMODULE_preprocess_page (& $ vars)
Matoeil

3

หากคุณต้องการมีหน้า 404 ที่กำหนดเองซึ่งไม่เกี่ยวข้องกับการสร้างหน้า (โหนด) ให้ใช้โมดูลcustomerror

หากคุณมีหน้า 404 ใน Drupal ก็จะปรากฏในผลการค้นหาและ / หรือรายชื่อ Views ของคุณ

เมื่อใช้โมดูล customerror คุณสามารถลบล้างเทมเพลตโดยสร้างหน้า - customerror.tpl.php ในโฟลเดอร์ธีมของคุณ จำไว้ว่าให้ล้างแคชของคุณหลังจากที่คุณสร้างไฟล์เทมเพลตใหม่


ดูดี แต่สำหรับคนที่ใช้โมดูลเปลี่ยนเส้นทางดูเหมือนว่าพวกเขาเล่นได้ไม่ดี ฉันไม่เคยได้รับ customerror เพื่อแสดงหน้ามากกว่าสิ่งที่เปลี่ยนเส้นทางแสดง
evanmcd

1
เราใช้โมดูล Redirect และ Customerror พร้อม ๆ กันโดยไม่มีปัญหาเหล่านี้ เมื่อดูหน้าการตั้งค่าของโมดูลทั้งสองดูเหมือนว่า customerror (นอกเหนือจากฟังก์ชั่นข้อผิดพลาดที่กำหนดเอง) ยังมีคุณสมบัติในการจัดการการเปลี่ยนเส้นทางแม้ว่าจะมีอินเตอร์เฟสที่หยาบ หากคุณกำลังใช้การเปลี่ยนเส้นทาง (และ OP ไม่ได้เป็น) เพียงหลีกเลี่ยงการใช้การตั้งค่าการเปลี่ยนเส้นทางแบบกำหนดเองและคุณไม่ควรมีปัญหาใด ๆ
alexkb

0

หากไม่มีข้อตกลงใด ๆ ที่อาจมีอยู่ในฐานธีมของคุณคำถามสุดท้ายคือฉันจะรู้ได้อย่างไรว่าไฟล์เทมเพลตใดที่จะใช้ ...

นี่คือขั้นตอน:

  1. สร้างฐานพื้นฐานและเรียกมันตามที่คุณต้องการ
  2. กำหนดหน้านั้นให้กับผู้ดูแลระบบ / การกำหนดค่า / ระบบ / ไซต์ข้อมูล 404 การตอบกลับ
  3. เปิดใช้งานโหมด theme_debug
  4. พิมพ์ URL ที่โง่ในแถบที่อยู่ของคุณ
  5. คุณมาถึงหน้าแรกของคุณสร้างขึ้น
  6. ดูที่มาและข้อเสนอแนะแม่แบบคุณจะได้รับสิ่งที่ชอบ:ป้อนคำอธิบายรูปภาพที่นี่

  7. ตรงไปตรงมาไม่มีไฟล์ preprocess หรือ template.php ที่จะแก้ไข

ตัวฉันเองได้เลือกอันที่ถูกทำเครื่องหมายด้วยขวานเนื่องจากฉันต้องการอะไรที่เปลือยกายด้วยรูปเฟรมเต็มและเพียงแค่ลิงค์ไปด้านหลัง


โปรดทราบว่าหน้าพื้นฐานที่คุณสร้างขึ้นสำหรับข้อผิดพลาด 404 จะปรากฏในผลการค้นหาเป็นหน้าเนื้อหาด้วย
rooby
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.