ฉันมีลำโพงประเภทเนื้อหาที่ใช้ประเภทเนื้อหาเหตุการณ์เป็นข้อมูลอ้างอิง กิจกรรมมีฟิลด์วันที่และเวลาเริ่มต้น อาจมีเหตุการณ์จำนวนเท่าใดก็ได้ที่ผู้พูดพูด เมื่อไปที่หน้าผู้พูด เหตุการณ์จะไม่เรียงตามวันที่ แต่จะเรียงตามรหัส ฉันจะเปลี่ยนสิ่งนี้โดยทางโปรแกรมได้อย่างไร
ฉันสามารถรับค่าฟิลด์และจัดเรียงตามวันที่ได้ แต่ฉันไม่สามารถตั้งค่ากลับเป็นตัวแปรได้
ลิงค์ Drupal API ที่เกี่ยวข้อง
ใช้ \Drupal\Component\Utility\SortArray;
ฟังก์ชัน mytheme_preprocess_node__speaker_page(&$ตัวแปร) {
$node = $variables['โหนด'];
$entity_ids = [];
ถ้า (โหนด $) {
ถ้า (isset($node->field_events)) {
$items = $node->field_events;
$unsorted=array();
foreach ($ รายการเป็น $ รายการ) {
$target_id = $item->target_id;
$field_event = $item->entity;
array_push($ไม่เรียงลำดับ, array('target_id' => $target_id, 'event_date' => strtotime($field_event->field_date_of_event->value)));
}
usort($ไม่เรียงลำดับ, ฟังก์ชัน ($a, $b) {
กลับ SortArray::sortByKeyInt($a, $b, 'event_date');
});
$new_entity_ids = array_column($ไม่เรียงลำดับ, 'target_id');
$items_new = \Drupal\node\Entity\Node::loadMultiple($new_entity_ids);
$variables['node']->field_events = $items_new;
}
}
}