เริ่มจากสิ่งนี้:
ตัวอย่างส่วนใหญ่สำหรับผู้ให้บริการบริบทและปลั๊กอินที่ใช้บริบท
ค่าดำเนินการกับค่าเดียวเท่านั้น
แม้ว่าจะเป็นเรื่องจริง แต่โปรดทราบว่า "ค่าเดียว" ที่ให้นั้นเป็นวัตถุ ไม่ใช่ประเภทดั้งเดิม ในกรณีของผู้ให้บริการบริบทของกลุ่ม "ค่าเดียว" คือวัตถุเอนทิตีประเภท 'กลุ่ม' ตัวเอนทิตีมีข้อมูลตามปกติทั้งหมด - id, label, คำอธิบาย, วันที่สร้าง, ผู้แต่ง, ฟิลด์ฐาน ฯลฯ ดังนั้นจึงผิดที่จะคิดว่าเป็นตัวเลขเดียวเท่านั้น
ในการจัดเตรียมอาร์เรย์ของค่า คุณต้องส่งคืนวัตถุที่แสดงถึงโครงสร้างข้อมูลแทนเอนทิตี Typed Data API หลักกำหนดประเภทข้อมูลต่างๆ ซึ่งประเภทแผนที่น่าจะดีที่สุดสำหรับวัตถุประสงค์ของคุณแผนที่เก็บชุดของค่าต่างๆ คล้ายกับอาร์เรย์เชื่อมโยงที่คุ้นเคยใน PHP
ดังนั้น โครงร่างของการแก้ปัญหาคือการสร้างผู้ให้บริการบริบทของคุณเองโดยการคัดลอกผู้ให้บริการบริบทของกลุ่มที่มีอยู่ แก้ไขสำเนาของคุณเพื่อแทนที่การสร้างข้อกำหนดบริบทเอนทิตี คุณสร้างข้อกำหนดบริบทแผนที่ จากนั้นเพิ่มค่าที่คุณต้องการให้กับของคุณ แผนที่.
หากคุณต้องการฟังก์ชันเพิ่มเติม คุณสามารถสร้างประเภทข้อมูลของคุณเองได้ (ฉันขอแนะนำให้ใช้คลาสย่อยของ Map สำหรับสิ่งนี้) และจัดเตรียมวัตถุของประเภทข้อมูลนั้นแทน Entity หรือ Map
คุณสามารถดูตัวอย่างสั้นๆ ของการเขียน Context Provider ของคุณเองได้ที่นี่:
https://www.drupal.org/docs/contributed-modules/rules-essentials/for-developers/providing-global-context-variables