Score:0

จะส่ง Block ID ไปยังมุมมองได้อย่างไร

ธง us

ฉันมีประเภท Custom Block ที่เรียกว่า HomeBlocks บันเดิลนี้มีฟิลด์ย่อหน้าซึ่งอนุญาตหลายย่อหน้า

จากนั้นฉันวาง (โดยใช้ Layout Builder) อินสแตนซ์ของประเภทบล็อกนี้ในหน้าแรกของฉัน (ประเภทโหนดที่เรียกว่า Landing Page) ในเลย์เอาต์ของประเภทบล็อก ฉันมีมุมมองซึ่งแสดงรายการย่อหน้าที่เพิ่มลงในบล็อกเฉพาะนั้น มุมมองแสดงรายการย่อหน้าของฉัน แต่แสดงรายการย่อหน้าทั้งหมดของประเภทนั้น ถ้าฉันเพิ่มตัวกรองตามบริบทสำหรับ Parent ID ให้กับมุมมองและตั้งค่าเป็น Fix โดยมีค่าเป็น BlockID ของบล็อกที่ฉันวางไว้ในหน้าแรกของฉัน จากนั้นจะกรองเฉพาะส่วนที่เพิ่มในบล็อกนั้น สมบูรณ์แบบ.

คำถามก็คือ; จะตั้งค่าตัวกรองตามบริบทนี้แบบไดนามิกได้อย่างไร

ฉันคิดได้ 2 วิธี:

  1. สร้างปลั๊กอินตัวกรองตามบริบทซึ่งผ่าน BlockID
  2. ส่ง BlockID จากเค้าโครงไปยังมุมมอง

ฉันดูตัวเลือกที่ 2 สักครู่และพบว่ามีงานบางอย่างที่ดำเนินการอยู่เพื่อให้ข้อโต้แย้งถูกส่งกลับจาก LB; แต่มันรองรับค่าคงที่เท่านั้น (ตรงข้ามกับโทเค็น)

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

ชิ้นส่วนที่ขาดหายไปนี่คือวิธีรับรายการบล็อก (บางประเภท) ซึ่งวางบนโหนดเฉพาะ

ฉันพยายามทำสิ่งนี้ด้วยมุมมองและฉันสามารถรับรายการ BlockIds ของบล็อกประเภทนี้ทั้งหมด แต่ไม่เห็นวิธีกรองไปยังโหนดเฉพาะที่ใช้

หากจะมีการใช้บล็อกนี้เพียง 1 อินสแตนซ์บนไซต์ จากนั้นฉันสามารถใช้มุมมองที่มีอยู่ (ซึ่งแสดงรายการบล็อกประเภทนี้เท่านั้น) ฉันไม่กังวลเกี่ยวกับการมีบล็อกนี้หลายเวอร์ชันในหน้าเดียว แต่ฉันพยายามที่จะรองรับว่าอาจมีหลายหน้าที่มีการเพิ่มบล็อกนี้

Score:0
ธง in

ถ้าฉันเข้าใจถูกต้อง นี่คือสิ่งที่คุณทำ:

  1. สร้างย่อหน้าบางประเภท
  2. สร้างประเภทบล็อกโดยมีช่องย่อหน้าที่อ้างอิงถึงประเภทย่อหน้าใน #1
  3. สร้างมุมมองที่มีการแสดงบล็อกของ ย่อหน้าพร้อมตัวกรองตามบริบทสำหรับ Parent ID
  4. เพิ่มมุมมองใน #3 ให้กับการแสดงประเภทบล็อกใน #2 ผ่าน Layout Builder
    • ฉันเดาว่าคุณมีสิ่งอื่นๆ เกิดขึ้นในเลย์เอาต์ มิฉะนั้น นี่อาจเป็นเพียงบล็อกมุมมองของย่อหน้าหรือเพียงแค่เพิ่มฟิลด์ย่อหน้าลงในเลย์เอาต์โดยตรง
  5. สร้างอินสแตนซ์ของประเภทบล็อกใน #2 และเพิ่มลงในเพจ

มีขั้นตอนสำคัญสองสามขั้นตอนที่พลาดได้ง่าย:

  • ในขั้นตอนที่ 3 (การสร้างมุมมอง) ให้สร้างความสัมพันธ์กับประเภทเอนทิตีแบบบล็อกจากนั้น แทนที่จะสร้างตัวกรองตามบริบทสำหรับ Parent ID ของย่อหน้า ให้สร้างตัวกรองตามบริบทสำหรับบล็อกที่เกี่ยวข้อง รหัส สนาม.
  • ในขั้นตอนที่ 4 (การเพิ่มบล็อกมุมมองไปยังเค้าโครง) เมื่อคุณเพิ่มบล็อกมุมมองลงในเค้าโครงของบล็อก ตัวสร้างเลย์เอาต์จะถามคุณเกี่ยวกับชื่อบล็อกและการมองเห็น หลังจากนั้น และเนื่องจากการเปลี่ยนแปลงมุมมองก่อนหน้านี้ ตอนนี้จะถามคุณว่าค่าใดที่จะส่งเป็นค่าตัวกรองตามบริบท. จะมีตัวเลือกที่แสดงถึงบล็อกปัจจุบัน

ผลลัพธ์สุดท้ายควรเป็นมุมมองภายในเค้าโครงของย่อหน้าการกรองบล็อกตาม ID ของบล็อกที่มีอยู่

liquidcms avatar
us flag
ยอดเยี่ยม แต่อาจต้องใช้แพทช์? คำอธิบายของคุณเกี่ยวกับสิ่งที่ฉันมีนั้นถูกต้อง ไม่มีความสัมพันธ์สำหรับ "ประเภทเอนทิตีบล็อก" ฉันมีความสัมพันธ์กับเนื้อหาโดยใช้ฟิลด์ที่เพิ่มในประเภทนั้น ใช้หนึ่งในนั้นที่ฉันมีสำหรับ "รหัสบล็อกที่กำหนดเอง" หลังจากวางบล็อก ฉันมีลิงก์ตามบริบทสำหรับ "การควบคุมการมองเห็น" (แพตช์) จัดการ attrs (สไตล์) และกำหนดค่า ในการกำหนดค่าฉันเห็นเฉพาะชื่อและแทนที่ชื่อ ฉันยังสามารถเปิดใช้งานเพื่อขอข้อโต้แย้งในการตั้งค่าดูภายใต้บล็อก แต่สิ่งนี้ใช้เพียงรหัสคงที่ในการจัดวาง
liquidcms avatar
us flag
ฉันจะลองตั้งค่านี้บนไซต์วานิลลา D9 บางทีคุณอาจมีแพตช์ หรือฉันไม่มีแพตช์ล่าสุด (ฉันใช้ D9.2) หรือแพตช์ที่ฉันมีกำลังรบกวน
liquidcms avatar
us flag
ลองใช้ไซต์วานิลลา D9.2 ด้วยแพตช์เพียงไม่กี่ตัวเพื่อให้ย่อหน้าทำงานได้ทั้งหมดด้วยบล็อกใน LB และฉันได้รับผลลัพธ์เหมือนกับที่กล่าวไว้ ฉันจะลองอัปเดตเป็น D9.3 ล่าสุด
in flag
@liquidcms ฉันเพิ่งตรวจสอบความสัมพันธ์มีชื่อว่า "By id: Custom block using ``" เมื่อคุณเพิ่มตัวกรองตามบริบท ฟิลด์ที่จะกรองคือ "รหัสบล็อกที่กำหนดเอง" จากนั้นรายละเอียดเล็กน้อยที่ฉันพลาดไป เมื่อคุณกำหนดค่าตัวกรองตามบริบท คุณทำเครื่องหมายที่ "ระบุเกณฑ์การตรวจสอบความถูกต้อง" โดยตัวตรวจสอบความถูกต้องตั้งค่าเป็น "บล็อก" และ Single ID เป็นอาร์กิวเมนต์ ฉันคิดว่า บิตสุดท้ายนี้คือสิ่งที่ทำให้ตัวเลือกปรากฏขึ้นสำหรับฉันในครั้งสุดท้ายที่ฉันทำสิ่งนี้ และสิ่งนี้มีให้ตั้งแต่ 9.1 โดยไม่มีแพตช์
liquidcms avatar
us flag
น่าเศร้าที่ไม่มีความสัมพันธ์ใด ๆ ใกล้กับชื่อนั้น บางทีคุณอาจมีโมดูลสนับสนุน ฉันจะดูว่าฉันสามารถติดตามมันได้หรือไม่ ขอบคุณ.
in flag
@liquidcms การค้นหาอย่างรวดเร็วสำหรับ "By id" (ตัวพิมพ์และคำที่ตรงกัน) ในโค้ดเผยให้เห็นว่าคุณลักษณะนี้มาจาก `entity_reference_revisions` ซึ่งเป็นการอ้างอิงของ `paragraphs` ซึ่งคุณควรมีอยู่แล้ว
liquidcms avatar
us flag
น่าแปลกที่ฉันทำการค้นหาที่ละเอียดอ่อนแบบตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ทั่วทั้งไซต์และไม่พบอะไรเลย แต่การขุดค้นเล็กน้อยและเดาว่าคุณมีแพทช์นี้อยู่แล้ว: https://www.drupal.org/node/2799479 อันจาก #163 เหมือนที่ฉันมีอันจาก #158 ที่ยังไม่ได้เพิ่มความสัมพันธ์นี้ ขอบคุณสำหรับความช่วยเหลือ
liquidcms avatar
us flag
และถึงแม้จะมีแพตช์นั้น .. ก็ยังไม่มีตัวเลือกให้ส่งรหัสบล็อกปัจจุบัน (หรืออย่างอื่นไปยังมุมมอง) ฉันสงสัยว่าแพตช์อื่นให้ส่วนนี้ของโซลูชัน สำหรับตอนนี้ ฉันจะกลับไปที่โซลูชันของปลั๊กอินอาร์กิวเมนต์ที่กำหนดเองเพื่อส่งผ่าน "รหัสผู้ปกครอง" สิ่งนี้ใช้งานได้ แต่ในขณะนี้คว้าเฉพาะบล็อกแรกของประเภทนี้เท่านั้นเนื่องจากฉันไม่สามารถหาคำตอบสำหรับคำถามเดิมของฉัน - "จะรับรายการบล็อกที่วางบนโหนดได้อย่างไร"

โพสต์คำตอบ

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