ฉันมีลำโพงประเภทเนื้อหาที่ใช้ประเภทเนื้อหาเหตุการณ์เป็นข้อมูลอ้างอิง กิจกรรมมีฟิลด์วันที่และเวลาเริ่มต้น อาจมีเหตุการณ์จำนวนเท่าใดก็ได้ที่ผู้พูดพูด เมื่อไปที่หน้าผู้พูด เหตุการณ์จะไม่เรียงตามวันที่ แต่จะเรียงตามรหัส ฉันจะเปลี่ยนสิ่งนี้โดยทางโปรแกรมได้อย่างไร
ฉันสามารถรับค่าฟิลด์และจัดเรียงตามวันที่ได้ แต่ฉันไม่สามารถตั้งค่ากลับเป็นตัวแปรได้
ลิงค์ 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;
        // สร้างอาร์เรย์ที่ไม่เรียงลำดับใหม่ด้วย ID เป้าหมายและวันที่เหตุการณ์ สิ่งนี้ใช้สำหรับการเรียงลำดับ
        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; // สิ่งนี้ไม่ทำงาน
      //$ตัวแปร['node']->set($field_name)->referencedEntities(); 
    }
  }
}