ฉันจะจัดเรียงมุมมองตามฟิลด์ที่เขียนใหม่ได้อย่างไร


10

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

ฉันได้ทำวิจัยของฉันและได้พบเฉพาะหัวข้อเก่าที่เกี่ยวข้องค่อนข้างกับปลายตาย

ดูการเรียงลำดับตามฟิลด์ที่เขียนใหม่หรือไม่

ตารางไม่ได้เรียงลำดับบนฟิลด์ที่เขียนใหม่ แต่อยู่บนฟิลด์ดั้งเดิม

Views: ฟิลด์ที่กำหนดเองสำหรับเกณฑ์การจัดเรียง

จัดเรียงตามส่วนกลาง: ข้อความที่กำหนดเอง เป็นไปได้ไหม?

ฉันหวังว่าจะมีวิธีการใหม่หรือการแอบทำสิ่งนี้เกิดขึ้น


มีเหตุผลบางอย่างที่คุณไม่สามารถใช้คำตอบของ merlinofchaos ได้หรือไม่? drupal.org/node/1260160#comment-4907526
Kari Kääriäinen

เขาไม่ได้ให้คำตอบจริง ๆ เกี่ยวกับวิธีใช้ฟิลด์ที่คำนวณ เขาแนะนำให้ใช้มัน ฉันไม่สนใจที่จะลองทำ แต่ไม่รู้จะทำอย่างไรกับโมดูล ฉันหวังว่าจะมีสิ่งใหม่ให้ลองนับตั้งแต่ 2 ปีที่แล้วและสำหรับ Drupal 6
Nigel Waters

ใช่นั่นคือคำตอบสั้น ๆ หลักการยังคงเหมือนเดิม ดูคำตอบของฉัน
Kari Kääriäinen

คุณต้องการทำอะไรกับฟิลด์วันที่เหล่านั้น เลือกวันที่ถัดไปขึ้นมา?
Kari Kääriäinen

ฉันต้องการเรียงลำดับประเภทเนื้อหาของเหตุการณ์ตามฟิลด์วันที่สองแห่งตามลำดับจากน้อยไปหามาก
Nigel Waters

คำตอบ:


4

หากคุณไม่ต้องการไปหาเส้นทางของโมดูลนี่เป็นอีกทางเลือกหนึ่ง:

1) ติดตั้งโมดูลฟิลด์ที่คำนวณ
2) เพิ่มฟิลด์ที่คำนวณไปยังประเภทเนื้อหาของคุณ
3) ในการตั้งค่าฟิลด์ใน textarea โค้ดที่คำนวณ (PHP) คุณสามารถเข้าถึงข้อมูลฟิลด์

รับเขตข้อมูลวันที่ใน langugage ปัจจุบันของคุณเป็นตัวแปร

$repeating_dates = field_get_items($entity_type, $entity, 'field_repeating_date_example');
$multidates = field_get_items($entity_type, $entity, 'field_multidate_example');

ค่าวันที่ของคุณสามารถพบได้ใน

$repeating_dates[0]['value'],
$repeating_dates[1]['value'],
$repeating_dates[2]['value'], etc.

$multidates[0]['value'],
$multidates[1]['value'],
$multidates[2]['value'], etc.

ทำทุกอย่างตามตรรกะที่คุณต้องการด้วยฟิลด์วันที่และกำหนดผลลัพธ์ให้

$entity_field[0]['value']

ตอนนี้คุณมีฟิลด์ที่เรียงลำดับได้คุณสามารถใช้ในมุมมอง แต่ก่อนอื่นคุณต้องอัปเดตโหนดทั้งหมดเนื่องจากฟิลด์ที่คำนวณจะถูกคำนวณและบันทึกลงในฐานข้อมูลที่โหนดบันทึกเท่านั้น มีหลายวิธีในการทำสิ่งนี้คือการใช้การดำเนินการจำนวนมากของ Views จะให้ตัวเลือกในการบันทึกโหนดอีกครั้งที่ผู้ดูแลระบบ / เนื้อหา


ฉันไม่แน่ใจว่าสิ่งนี้จะทำงานกับเขตข้อมูลวันที่หนึ่งที่มีวันที่ซ้ำกันและสาขาอื่นที่มีวันที่เดียว (ด้วยการตั้งค่าไม่ จำกัด จำนวน) กรณีนี้อาจใช้งานได้ในกรณีที่ทั้งสองฟิลด์เป็นค่าเดียวเท่านั้น
ไนเจลวอเตอร์ส

ฉันแก้ไขคำตอบของฉันซึ่งครอบคลุมกรณีเหล่านั้น การใช้ dpm ($ entity) คุณสามารถดูว่าโครงสร้างของฟิลด์วันที่ของคุณคืออะไร dpm มาพร้อมกับโมดูล Devel
Kari Kääriäinen

โปรดอย่าแนะนำ[und]ไวยากรณ์ ใช้ field_get_items แทน
Letharion

1

ฉันคิดว่าคุณสามารถทำมันได้กับชมธรรมชาติเรียง มันมีตัวเลือกในการจัดเรียงเขตข้อมูลวิธีการ - เปิดใช้งานการเรียงลำดับสำหรับฟิลด์เฉพาะ ถ้าคุณทำตามบทช่วยสอนนี้คุณจะได้รับความคิด !!


drupal.org/project/partial_dateจะมีตัวเลือกในการรวมเข้ากับมุมมอง
Bala

0

วิธีการเดียวที่ทำให้เกิดเหตุการณ์นี้เกิดขึ้นคือถ้าคุณไม่ใช้การแบ่งหน้าคุณสามารถใช้การเรียงลำดับ PHP ในการแทนที่แบบสอบถามแบบกำหนดเองที่ไม่ต้องใช้ฐานข้อมูล

ตามสตี

การแบ่งหน้าเป็นสิ่งที่หยุดเราจากการเรียงลำดับตามเขตข้อมูลที่คำนวณได้เพราะปกติเราต้องพูดว่า "ฐานข้อมูล! รับผลลัพธ์ 21-30 เมื่อเรียงลำดับตามคอลัมน์ nid"

ดังนั้นคุณจึงไม่สามารถรับผลลัพธ์ 21-30 จาก db ได้อย่างน่าเชื่อถือหาก db ไม่รู้วิธีกำหนด 21-30 (เช่นในกรณีของเขตข้อมูลที่คำนวณ)

ดังนั้นวิธีการแก้ปัญหาที่ใช้ได้จริงและน่าเชื่อถือที่สุดคือการใช้ฟิลด์คำนวณตามที่ Kari Kääriäinenพูดถึง


ดูเหมือนว่ามีคนลงคะแนนฉันหลังจากฉันระบุหมายเลขรุ่นและแก้ไขข้อผิดพลาดในการคัดลอกวาง มีบางอย่างผิดปกติกับคำตอบนี้หรือไม่?

ฉัน upvoted ก่อนหน้านี้สำหรับวิธีการโมดูล แต่ downvoted ภายหลังเพราะสิ่งนี้เช่นเดียวกับคนอื่น ๆ รวมอยู่ฉันไม่ได้คำตอบที่ใช้งานได้เพราะคำถามตัวเองยังไม่ชัดเจนอย่างน้อยฉัน
Kari Kääriäinen

คำถามดูเหมือนชัดเจนสำหรับฉัน ฉันจะเพิ่มคำอธิบายบางอย่างให้กับคำตอบของฉัน

ไม่เป็นไรฉันรู้ว่า Views ไม่ทำงานเหมือนที่ฉันคิด

0

นี่เป็นวิธีแฮ็กที่จะทำ แต่ใช้งานได้และคุณไม่ต้องการโมดูลเพิ่มเติมใด ๆ

สร้างป้ายกำกับสำหรับฟิลด์ที่คุณต้องการเรียงลำดับและอย่าแยกออกจากการแสดงผล ให้เขียนจอแสดงผลเป็น "blank" แทนโดยเพิ่ม<!---->ความคิดเห็นhtml ที่ว่างเปล่าแทนค่า rewrite จากนั้นเพิ่มฟิลด์ php / rewritten อื่นของคุณเป็นลูกของคอลัมน์นี้

นี่จะแสดงส่วนหัวของตารางสำหรับคอลัมน์ที่ถูกต้องสำหรับการเรียงลำดับ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.