Drupal twig ป้องกันไม่ให้คุณใช้งานบางฟังก์ชัน แต่คุณสามารถเพิ่มฟังก์ชันที่กำหนดเองได้ผ่านส่วนขยาย twig ที่กำหนดเองได้ สมมติว่า get_any_node_field_value
ในกิ่งไม้:
<div>
{{get_any_node_field_value(nodeId, 'field_my_custom_name')}}
</div>
บทความนี้ ดูเหมือนจะให้คำแนะนำที่ดีในการตั้งค่าส่วนขยายกิ่งแบบกำหนดเอง โดยสังเขป:
เว็บ/โมดูล/กำหนดเอง/your_module/src/Extension/TwigExtension.php:
<?php
เนมสเปซ Drupal\your_module\Extension;
ใช้ Twig\Extension\AbstractExtension;
ใช้ Twig\TwigFunction;
คลาส TwigExtension ขยาย AbstractExtension {
ฟังก์ชั่นสาธารณะ getFunctions (): อาร์เรย์ {
กลับ [
ใหม่ TwigFunction('get_any_node_field_value', [$this, 'get_any_node_field_value']),
];
ฟังก์ชันสาธารณะ get_any_node_field_value ($nodeId, $fieldName) {
// ตรรกะของคุณอยู่ที่นี่
}
}
โปรดทราบว่าการดำเนินการนี้ไม่มีผลกับการตั้งค่าแคชของคุณ ดังนั้นคุณจะไม่ได้รับการอัปเดตเทมเพลตอัตโนมัติ หากโหนด X ที่ไม่เกี่ยวข้องเปลี่ยนไป ขึ้นอยู่กับกรณีการใช้งานของคุณ สิ่งนี้อาจไม่เป็นปัญหา แต่อาจตกลงไปที่นิ้วเท้าของคุณในภายหลัง หากคุณต้องการดูแลเกี่ยวกับการแคช จะเป็นการดีกว่าหากดำเนินการผ่านกระบวนการล่วงหน้าและขยายแท็กแคชด้วย