Score:1

จะเปลี่ยนการเปิดเผยบล็อก Layout Builder ได้อย่างไร

ธง us

มีเบ็ดเพื่อแก้ไขการเข้าถึงบล็อกสำหรับบล็อกที่วางโดยใช้ Layout Builder หรือไม่ ฉันเห็นว่ามี hook_block_access; แต่น่าเศร้าที่สิ่งนี้จะไม่เกิดขึ้นเมื่อมีการวางบล็อกโดยใช้ Layout Builder

นอกจากนี้ยังมีงานเกิดขึ้นที่นี่: https://www.drupal.org/project/drupal/issues/2916876#comment-14279293 เพื่อให้การตั้งค่าการเปิดเผยบล็อกมาตรฐานพร้อมใช้งานสำหรับบล็อก Layout Builder แต่สิ่งนี้อนุญาตเฉพาะปลั๊กอินการมองเห็นที่กำหนดไว้เท่านั้น นี่เป็นตัวเลือกเดียวของฉันในการสร้างปลั๊กอินการเปิดเผยบล็อกที่กำหนดเองและใช้กับแพตช์นั้นหรือไม่

in flag
ฉันเชื่อว่า Drupal กำลังค่อยๆ เลิกใช้ hooks เพื่อหันไปใช้ปลั๊กอินและสมาชิกเหตุการณ์ (คุณสามารถหาบทความมากมายเกี่ยวกับสาเหตุที่ดีกว่า) ฉันจะไม่แปลกใจเลยหากแพตช์จะจบลงด้วยการไม่ใช้งาน hook นอกจากนี้ บล็อกที่อยู่ใน Block Layout ใช้ปลั๊กอินเงื่อนไขอยู่แล้ว ไม่มีความรู้สึกที่จะสร้างกลไกที่แตกต่างไปจากเดิมอย่างสิ้นเชิงเมื่อสามารถใช้แทนได้
liquidcms avatar
us flag
@Joseph แล้วมีความคิดอย่างไรว่าเหตุการณ์ที่ควบคุมการเข้าถึงบล็อกที่วางด้วยตัวสร้างเลย์เอาต์คืออะไร
in flag
โปรแกรมแก้ไขที่คุณกล่าวถึงใช้ [ปลั๊กอินเงื่อนไข] (https://www.drupal.org/node/1961370) ซึ่งเป็นชนิดเดียวกับที่ใช้กับบล็อกในบล็อกเลย์เอาต์ [คุณสามารถสร้างปลั๊กอินเงื่อนไขของคุณเองได้](https://drupalsun.com/2021/04/29/condition-plugins-visibility-drupal-8-9) เช่นเดียวกับปลั๊กอินในตัว
berliner avatar
bd flag
@liquidcms คุณช่วยอธิบายรายละเอียดเพิ่มเติมหน่อยได้ไหมว่าคุณต้องการบรรลุอะไร
liquidcms avatar
us flag
@Joseph ขอบคุณสำหรับลิงค์และใช่ ฉันรู้ว่าด้วยโปรแกรมแก้ไขที่ฉันพูดถึง (เนื่องจาก LB ไม่ได้ใช้ปลั๊กอินเงื่อนไข) ฉันสามารถทำได้ด้วยปลั๊กอิน - แต่ดูเหมือนว่าเกินความจำเป็นเนื่องจากสิ่งนี้ให้ UI ที่ไม่จำเป็น hook (หรือตัวจัดการเหตุการณ์) จะมีประสิทธิภาพมากกว่า
Score:1
ธง cn

นี่เป็นตัวเลือกเดียวของฉันในการสร้างปลั๊กอินการเปิดเผยบล็อกที่กำหนดเองและ ใช้กับแพทช์นั้นได้ไหม?

ไม่ การกำหนดค่าการมองเห็นของอินสแตนซ์บล็อกไม่ใช่ตัวเลือกเดียว คุณยังสามารถควบคุมการเข้าถึงในระดับปลั๊กอินได้อีกด้วย ถ้าคุณเพิ่ม BlockPluginTrait::blockAccess ไปยังคลาสปลั๊กอิน คุณควบคุมอินสแตนซ์บล็อกทั้งหมดของปลั๊กอินนี้

อย่างไรก็ตาม ที่พบมากที่สุดใน Layout Builder คือบล็อกแบบกำหนดเองแบบอินไลน์ ปลั๊กอินสำหรับบล็อกเหล่านี้ใช้วิธีนี้แล้ว โดยตรวจสอบการเข้าถึงเอนทิตีเนื้อหาของบล็อกที่อยู่ด้านล่าง ดังนั้นในกรณีนี้คุณสามารถใช้ขอเกี่ยวได้ แต่สำหรับ block_content:

ใช้ Drupal\Core\Access\AccessResult;
ใช้ Drupal\Core\Entity\EntityInterface;
ใช้ Drupal\Core\Session\AccountInterface;

/**
 * ใช้ hook_ENTITY_TYPE_access()
 */
ฟังก์ชัน mymodule_block_content_access (EntityInterface $entity, $operation, AccountInterface $บัญชี) {
  ถ้า ($ การดำเนินการ == 'ดู') {
    ถ้า ($entity->id() == 123) {
      กลับ AccessResult::forbidden();
    }
  }
  กลับ AccessResult::เป็นกลาง ();
}
liquidcms avatar
us flag
ฉันไม่เคยพบสิ่งนี้: "ที่พบมากที่สุดใน Layout Builder คือบล็อกที่กำหนดเองแบบอินไลน์" ในกรณีนี้ อย่างไรก็ตาม ฉันไม่คิดว่าจำเป็น แต่ฉันควรจะบอกว่านี่คือบล็อก Views และด้วยเหตุนี้จึงไม่ได้ใช้ hook block_content_access (แต่เป็นข้อมูลที่ดีที่ควรทราบ) ยังคงตามหา.
4uk4 avatar
cn flag
นี่คือคุณสมบัติหลักของ UI ตัวสร้างเลย์เอาต์ที่คุณสามารถสร้างบล็อกที่ใช้ซ้ำไม่ได้ในทันที BTW คลาสปลั๊กอินบล็อก Views ใช้ `blockAccess()` ตรวจสอบการเข้าถึงของ View คุณจึงสามารถกำหนดค่าการเข้าถึงที่นั่น หรือแม้แต่เขียนปลั๊กอินการเข้าถึง Views ของคุณเอง หากคุณไม่พบตัวเลือกการเข้าถึงที่คุณต้องการ
liquidcms avatar
us flag
ใช่ ฉันสามารถเขียนปลั๊กอินซึ่งเป็น UI ที่ไม่จำเป็นเพิ่มเติมได้ ฉันคิดว่าฉันอธิบายคำถามไม่ถูกต้อง สิ่งที่ฉันมีคือ 2 (มุมมอง) บล็อกที่แสดงหรือไม่ขึ้นอยู่กับเนื้อหา ฉันจัดการเพื่อบรรลุสิ่งที่ฉันกำลังทำอยู่โดยกำจัดบล็อกใดบล็อกหนึ่งและรวมส่วนของเงื่อนไขไว้ในมุมมองโดยใช้กิ่งไม้ ขอบคุณสำหรับความช่วยเหลือ ขอโทษที่ฉันอธิบายได้ไม่ดีพอ
4uk4 avatar
cn flag
ไม่มีอะไรผิดปกติกับคำถามเดิม มิฉะนั้นฉันจะไม่ตอบ แต่คุณคาดไม่ถึงว่ามันจะเจาะจงได้ขนาดนี้ คุณสามารถใช้คำตอบของฉันกับงานนี้ได้เช่นกัน ฝังสองมุมมองในบล็อกและวางส่วนเงื่อนไขใน blockAccess()

โพสต์คำตอบ

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