ฉันมีมุมมองสำหรับประเภทเนื้อหา เหตุการณ์
ด้วยฟิลด์ เหตุการณ์_ชื่อ
, คำอธิบาย
, สรุป
, เหตุการณ์_start_date
ฯลฯ
ความต้องการของฉันคืออะไร:
- เรียงลำดับเหตุการณ์จากน้อยไปหามาก
event_date เท่ากับหรือมากกว่าวันที่ปัจจุบัน
(เหตุการณ์ที่จะเกิดขึ้น)
- เรียงลำดับเหตุการณ์จากมากไปน้อย
event_date น้อยกว่าวันที่ปัจจุบัน
(เหตุการณ์ที่ผ่านมา)
หมายเหตุ: ข้อมูลที่กำลังจะมาถึงควรมาก่อนแล้วตามด้วยข้อมูลที่ผ่านมา
เช่นข้อมูลและผลลัพธ์ที่คาดหวัง
ตัวอย่างข้อมูล
ผลลัพธ์ที่คาดหวัง
ด้วยการตั้งค่า UI มุมมองปกติ ฉันไม่สามารถทำสิ่งนี้ได้ ดังนั้นฉันจึงพยายาม views_query_alter
ขอแก้ไขเกณฑ์การเรียงลำดับ แต่ฉันไม่สามารถบรรลุสิ่งนี้ได้ ความช่วยเหลือใด ๆ ?
สิ่งที่ฉันได้ลอง
/**
* ใช้ hook_views_query_alter
*/
ฟังก์ชัน news_t1_views_query_alter (ViewExecutable $view, QueryPluginBase $query) {
if($view->id() == 'เหตุการณ์'){
$query->orderby[0]['field'] = "CASE node__field_st_field_st_value เมื่อวันที่ (node__field_st_field_st_value) >= CURDATE() END";
$query->orderby[0]['direction'] = "ASC";
$query->orderby[1]['field'] = "กรณี node__field_st_field_st_value เมื่อ DATE(node__field_st_field_st_value) < CURDATE() END";
$query->orderby[1]['direction'] = "DESC";
//$view->set_items_per_page(5);
}
}
node__field_st
คือชื่อฟิลด์ event_date
อัปเดตหลังจากคำตอบของ @Patrick Kenny
โซลูชันของคุณใช้งานได้ดี ขอบใจ!. ฉันเพิ่ม ส่วนกลาง: พื้นที่ดู (ส่วนกลาง: พื้นที่ดู)
ในส่วนท้ายของจอแสดงผลหลัก แต่มีข้อผิดพลาดเล็กน้อยที่ต้องลบออก ฉันมีตัวกรองตามบริบทและตัวกรองที่เปิดเผยในมุมมองหลักซึ่งสืบทอดมา (ส่วนนี้ใช้ได้) แต่ปัญหาคือหัวเรื่องซ้ำแล้วซ้ำอีกในจอแสดงผลที่แนบมา มีวิธีใดที่จะกำจัดสิ่งนี้? แนบภาพหน้าจอแล้ว