Score:0

ฉันจะเพิ่มคำแนะนำเทมเพลตโหนดตามชื่อโหนดได้อย่างไร

ธง in

กำลังแนะนำการดีบัก Twig โหนด--4.html.twig เป็นไฟล์เทมเพลตสำหรับโหนดที่มี ID เป็น 4 เนื่องจาก ID โหนดเปลี่ยนแปลงเมื่อเปลี่ยนสภาพแวดล้อม ฉันจึงต้องใช้ไฟล์เทมเพลตที่มีชื่อตามชื่อโหนด

มีวิธีตรงไปตรงมาในการบรรลุเป้าหมายนี้หรือไม่?

ฉันใช้ Drupal 9

MrD avatar
cn flag
MrD
คุณสามารถใช้ hook_theme_suggestions_node_alter เพื่อเพิ่มเทมเพลตคำแนะนำ
in flag
@LesLim ฉันได้อัปเดตคำถามเพื่อสะท้อนถึงความจริงที่ว่าฉันใช้ Drupal 9 ขอบคุณ!
in flag
@MrD ฉันกำลังใช้ Twig Template Suggester และก็ไม่ได้มีประโยชน์อะไรในเรื่องนี้เช่นกัน
MrD avatar
cn flag
MrD
@johnny_n คุณสามารถเปิดใช้งานนามแฝงสำหรับโหนดและเพิ่มคำแนะนำโดย url เดียวกันกับคำแนะนำหน้า
sonfd avatar
in flag
คุณอาจไม่ต้องการใช้ฟิลด์ชื่อสำหรับสิ่งนี้ อาจสร้างฟิลด์พิเศษสำหรับกำหนดคำแนะนำเทมเพลตนี้ หากคุณต้องการใช้เพียงหน้าเดียวจริงๆ คุณสามารถตั้งค่าของฟิลด์แล้วลบฟิลด์ออกจากการแสดงฟอร์มของประเภทเนื้อหา เพื่อไม่ให้เปลี่ยนแปลงในภายหลัง คงจะเป็นเรื่องยุ่งยากมากหากการเปลี่ยนชื่อง่ายๆ ทำให้เค้าโครงหน้าของคุณเสียหาย!
in flag
@sonfd - โทรได้ดี และขอบคุณ MrD สำหรับคำแนะนำเพิ่มเติม สิ่งนี้มีประโยชน์อย่างไม่น่าเชื่อ ขอบคุณ!
Score:1
ธง de

ตามความคิดเห็นของ MrD hook_theme_suggestions_hook_alter เป็นกุญแจสำคัญ (ดู เอกสาร เกี่ยวกับ hook นี้) หรือ hook_theme_suggestions_alter() หากคุณต้องการเพิ่มคำแนะนำให้กับเอนทิตีหลายประเภท

จะช่วยให้คุณสามารถเพิ่มคำแนะนำเทมเพลตที่คุณขาดหายไป

ฟังก์ชั่น yourTheme_theme_suggestions_node_alter (อาร์เรย์ &$ คำแนะนำ, อาร์เรย์ $ ตัวแปร) {
  // ใช้ตัวแปร $variables เพื่อรับข้อมูลที่เกี่ยวข้องกับโหนดของคุณ
  // เช่น. $node = $variables["elements"]["#node"] เพื่อรับ Node object ของคุณ

  // ใช้ตัวแปรอาร์เรย์ $suggestions เพื่อเพิ่มคำแนะนำที่กำหนดเองของคุณลงในรายการ
  // เช่น. $suggestions[] = "node__" "คำแนะนำของฉัน";
}

จากนั้น เพิ่มไฟล์เทมเพลตของคุณ node--myawesomesuggestion.html.twig ลงในธีมของคุณ และคุณควรดำเนินการเสร็จสิ้น

in flag
ขอบคุณ @misterdidi - คุณพูดถูกจริงๆ ขอบคุณที่ชี้แจงฉันเข้าใจผิดธรรมชาติของเบ็ด
Score:0
ธง us

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

สำหรับชื่อโหนด ฉันจะใช้โค้ดต่อไปนี้

ฟังก์ชัน mymodule_theme_suggestions_node_alter (อาร์เรย์ &$ คำแนะนำ, อาร์เรย์ $ ตัวแปร) {
  $node_title = \Drupal::transliteration()->transliterate($variables['elements']['#node']->getTitle());
  $suggestions[] = 'node__' preg_replace('/[^a-z0-9_]+/', '_', mb_strtolower($node_title));
}

โค้ดสำหรับแทนที่อักขระที่ไม่ควรอยู่ในชื่อฟังก์ชัน PHP นั้นเหมือนกับที่ใช้จาก media_theme_suggestions_media() สำหรับ $provider_id.

โพสต์คำตอบ

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