hook_entity_presave()
และ hook_ENTITY_TYPE_presave()
ไม่ควรสันนิษฐานว่าเอนทิตีได้รับการแก้ไขโดยใช้ฟอร์ม หรือมีการแสดงเพจให้ผู้ใช้เห็น hooks เหล่านั้นยังถูกเรียกใช้เมื่อมีการสร้างเอนทิตีทางโปรแกรม เช่น ด้วยโค้ดต่อไปนี้ ซึ่งสามารถใช้ใน hook_cron()
การนำไปใช้งาน
ค่า $ = [
'ประเภท' => 'บทความ',
'title' => 'ชื่อบทความ',
'uid' => 1,
'สถานะ' => จริง,
];
$node = \Drupal::entityManager()->getStorage('node')->create($values);
$node->save();
hook ที่เรียกใช้ก่อนที่เอนทิตีจะแสดงผลคือ hook_entity_view()
(หรือ hook_ENTITY_TYPE_view()
).
โมดูลสามารถเพิ่มอาร์เรย์การแสดงผลพิเศษได้โดยใช้หนึ่งใน hooks เหล่านั้น สร้าง $
เช่นกับ $build['#attached']['library'][] = 'js/url-parameter.js';
.
ดังตัวอย่างโค้ด $display->getComponent()
ควรใช้เพื่อตรวจสอบว่าฟิลด์เอนทิตีได้รับการตั้งค่าให้แสดง เนื่องจากผู้ใช้ที่เป็นผู้ดูแลระบบสามารถซ่อนฟิลด์จาก /admin/structure/types/manage/article/display (สำหรับ บทความ ชนิดของเนื้อหา). ตัวอย่างเช่น ด้วยการตั้งค่าต่อไปนี้ ฉันจะซ่อนฟิลด์เอนทิตีแบบกำหนดเองและฟิลด์ แท็ก สนามสำหรับ บทความ ชนิดของเนื้อหา.
ฉันจะตรวจสอบค่าของ $view_mode
ส่งผ่านไปยัง hooks เหล่านั้นเนื่องจากค่านั้นบอกว่าเหตุใดโหนดจึงแสดงผล ตัวอย่างเช่น เมื่อโมดูลการค้นหาทำดัชนีโหนด $view_mode
เท่ากับ 'ดัชนีการค้นหา'
; เมื่อมีการเพิ่มโหนดในฟีด RSS $view_mode
เท่ากับ 'rss'
. ในกรณีดังกล่าว คุณอาจไม่ต้องการเพิ่มไลบรารี