Score:1

การกำหนดเส้นทางโหนดแบบกำหนดเอง

ธง cz

ฉันมีประเภทเนื้อหาผลิตภัณฑ์ที่มีนามแฝง: /products/headphone หน้าผลิตภัณฑ์นี้มี URL สองรูปแบบ:

  • /ผลิตภัณฑ์/หูฟัง/สาย
  • /ผลิตภัณฑ์/หูฟัง/ไร้สาย

URL ทั้งสองควรชี้ไปที่โหนดเดียวกัน อย่างไรก็ตาม ภายในฟังก์ชันการประมวลผลล่วงหน้าหรือกิ่งก้าน ฉันควรจะสามารถจับได้ว่ารูปแบบใดถูกโหลด (wire|wireless)

ฉันคิดว่าฉันควรสร้างโมดูลที่กำหนดเองและจัดการการกำหนดเส้นทางที่กำหนดเอง:

my_module.routing.yml:

my_module.modality:
  เส้นทาง: '/products/{product_slug}/{variation}'
  ค่าเริ่มต้น:
    _controller: '\Drupal\my_module\Controller\ProductController::action'
  ความต้องการ:
    _permission: 'เข้าถึงเนื้อหา'
  ตัวเลือก:
    พารามิเตอร์:
      product_slug:
        ประเภท: สตริง
      รูปแบบ:
        ประเภท: สตริง

ส่วนที่ฉันกำลังดิ้นรนคือวิธีชี้ตัวควบคุมกลับไปที่ฟังก์ชันการประมวลผลล่วงหน้า:

ฟังก์ชัน my_module_preprocess_node__product_page (อาร์เรย์ &$ตัวแปร){
  // บางสิ่งในการประมวลผลล่วงหน้า
}

นี่คือสิ่งที่ฉันมีอยู่ในคอนโทรลเลอร์ของฉัน:

\Drupal\my_module\Controller\ProductController:action

การกระทำของฟังก์ชั่นสาธารณะ ($ program_slug, $ รูปแบบ) 
{
กลับ [
        'เทมเพลต' => 'โหนด--program_page',
        'รูปแบบ' => $รูปแบบ
      ];
 }
4uk4 avatar
cn flag
นี่ไม่ใช่แนวทางที่ดี คุณกำลังพยายามคิดใหม่ว่า Drupal แสดงเอนทิตีอย่างไร วิธีที่เร็วที่สุดน่าจะเป็นการลบส่วนสุดท้ายของพาธในตัวประมวลผลพาธที่มีลำดับความสำคัญสูง จากนั้นให้การกำหนดเส้นทาง Drupal ปกติให้แก้ไขโหนดผลิตภัณฑ์และเรนเดอร์ ซึ่งจากนั้นจะเรียกใช้งานตัวประมวลผลล่วงหน้าโดยอัตโนมัติ สำหรับตัวประมวลผลพาธ ฉันได้อธิบายในคำถามอื่นเกี่ยวกับวิธีสร้างโค้ดด้วย drush: https://drupal.stackexchange.com/a/307416/47547

โพสต์คำตอบ

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