Score:1

การแก้ไขเทมเพลตที่กำหนดเองจากโค้ด

ธง pt

ฉันจะลบบล็อกและองค์ประกอบอื่นๆ โดยทางโปรแกรมออกจากเทมเพลตที่กำหนดเองรายการเดียวได้อย่างไร

ใน modle ที่กำหนดเองของฉัน ฉันได้กำหนดเส้นทางไปยังคอนโทรลเลอร์ซึ่งจะโหลดเทมเพลตซึ่งมีอยู่ในโมดูลเดียวกันด้วย ฉันโหลดข้อมูลจากตัวควบคุมลงในเทมเพลตสำเร็จแล้ว

ปัญหาของฉันคือเทมเพลตนั้นสืบทอดบล็อกและเมนูจากธีมที่ใช้งานอยู่ซึ่งฉันต้องลบออก แต่เฉพาะในเทมเพลตโมดูลเท่านั้น ตัวอย่างเช่น การค้นหาและบล็อกการนำทางหลักไม่ควรแสดง

ฉันได้ดำเนินการ:

ฟังก์ชัน mymodule_export_preprocess_page(&$ตัวแปร)
{
  unset($variables['page']['header']['searchform']);
  unset($variables['page']['menu_primary']);
}

แต่ภายหลังฉันรู้ว่าบล็อกการค้นหาและการนำทางถูกลบออกไป ไม่ใช่แค่ในเทมเพลตโมดูลเท่านั้น แต่จากทุกหน้าในไซต์ด้วย

ฉันยังค้นหาสิ่งที่ชอบ hook_page_alter ที่ไม่สามารถหาความเหมาะสมกับงานได้

Score:2
ธง bd

ฉันคิดว่าคุณกำลังสับสนกับธีมและเทมเพลต

ธีม เป็นชุดของไฟล์ที่ควบคุมการแสดงไซต์ของคุณผ่านการใช้ไฟล์เทมเพลต, CSS และ Javascript (ส่วนใหญ่แล้วจะมีมากกว่านี้หากคุณขุดค้น)

ไฟล์เทมเพลต เป็นเพียงหนึ่งในไฟล์เหล่านั้นในธีม

ดังนั้นเหตุผลที่ตรรกะในตัวคุณ hook_preprocess_page มีผลกับทุกๆ หน้า นั่นคือคุณใช้การแก้ไขเหล่านั้นโดยไม่มีเงื่อนไข ตะขอประมวลผลล่วงหน้าเหล่านั้น (เมื่อกำหนดในโมดูล) จะถูกนำไปใช้กับธีมที่ใช้งานอยู่สำหรับคำขอเพจใดๆ แล้วแต่ว่าจะใช้ธีมใด

เป็นการยากที่จะแนะนำวิธีแก้ปัญหาเฉพาะในกรณีของคุณโดยไม่ต้องดูโค้ดเพิ่มเติม เช่น จากคอนโทรลเลอร์ของคุณ แต่คุณสามารถลองทำตามบรรทัดเหล่านี้ (รหัสหลอก):

ฟังก์ชัน mymodule_export_preprocess_page(&$ตัวแปร) {
  ถ้า (\Drupal::routeMatch()->getRouteName() === 'route.to.controller') {
    unset($variables['page']['header']['searchform']);
    unset($variables['page']['menu_primary']);
  }
}
pt flag
ขอบคุณเบอร์ลินเนอร์ ฉันลงทุนมากเกินไปในโซลูชันที่เน้น hook และลืมทั้งหมดเกี่ยวกับ if-statement ที่ต่ำต้อย

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา