Score:1

แก้ไขเกณฑ์การเรียงลำดับโดยใช้ views_query_alter

ธง fi
KTM

ฉันมีมุมมองสำหรับประเภทเนื้อหา เหตุการณ์ ด้วยฟิลด์ เหตุการณ์_ชื่อ, คำอธิบาย, สรุป, เหตุการณ์_start_dateฯลฯ ความต้องการของฉันคืออะไร:

  1. เรียงลำดับเหตุการณ์จากน้อยไปหามาก event_date เท่ากับหรือมากกว่าวันที่ปัจจุบัน (เหตุการณ์ที่จะเกิดขึ้น)
  2. เรียงลำดับเหตุการณ์จากมากไปน้อย 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

โซลูชันของคุณใช้งานได้ดี ขอบใจ!. ฉันเพิ่ม ส่วนกลาง: พื้นที่ดู (ส่วนกลาง: พื้นที่ดู) ในส่วนท้ายของจอแสดงผลหลัก แต่มีข้อผิดพลาดเล็กน้อยที่ต้องลบออก ฉันมีตัวกรองตามบริบทและตัวกรองที่เปิดเผยในมุมมองหลักซึ่งสืบทอดมา (ส่วนนี้ใช้ได้) แต่ปัญหาคือหัวเรื่องซ้ำแล้วซ้ำอีกในจอแสดงผลที่แนบมา มีวิธีใดที่จะกำจัดสิ่งนี้? แนบภาพหน้าจอแล้ว

ป้อนคำอธิบายรูปภาพที่นี่

cn flag
มีหลายวิธีในการกำจัดหัวเรื่อง โดยส่วนตัวแล้ว ฉันจะใช้เทมเพลต Views แต่ฉันขอแนะนำให้เปิดคำถามใหม่เกี่ยวกับ "จะลบหัวข้อที่สองเมื่อใช้ไฟล์แนบ Views ได้อย่างไร" และคนอื่นอาจมีความคิดที่ดีกว่า
Score:1
ธง cn

วัตถุประสงค์: แสดงเหตุการณ์ที่จะเกิดขึ้น จากนั้นเหตุการณ์ที่ผ่านมา

วิธีที่ง่ายที่สุดในการปรับใช้สิ่งนี้ทั้งหมดผ่าน View UI คือการเพิ่มจอแสดงผลที่สองให้กับมุมมอง

ขั้นตอนพื้นฐาน

  1. สร้างการแสดงผลมุมมองหลัก กำหนดค่าเหตุการณ์ที่จะแสดงตามที่คุณต้องการ
  2. ตั้งค่าให้จัดเรียงตามเหตุการณ์ที่จะเกิดขึ้น และกรองเพื่อให้แสดงเฉพาะเหตุการณ์ที่จะเกิดขึ้น
  3. เพิ่ม ไฟล์แนบ แสดง. สำหรับการแสดงผลนี้ ให้แก้ไขตัวกรอง (หน้านี้: ลบล้าง) เพื่อแสดงเฉพาะกิจกรรมที่ผ่านมา และแก้ไขการเรียงลำดับด้วยวิธีเดียวกัน
  4. ใน ส่วนท้าย ของหน้าจอมุมมองหลัก ให้เพิ่มไฟล์แนบ
KTM avatar
fi flag
KTM
ขออภัยที่ต้องเพิ่มข้อกำหนดอีกข้อหนึ่งว่าควรแสดงในรายชื่อเดียว (single display) ไม่มีแท็บ
cn flag
@KTM คำตอบของฉันจะสร้างมุมมองที่มีเนื้อหาทั้งหมดในรายการใหญ่ จะมีสองแท็บแยกกันในหน้าจอผู้ดูแลระบบ Views UI แต่ผู้เข้าชมมุมมองจริงจะเห็นทุกอย่างในหน้าเดียว
KTM avatar
fi flag
KTM
ว้าว มันจะดีมาก! ฉันจะลองสิ่งนี้ :)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา