เธรดความคิดเห็นที่เริ่มต้นที่นี่จะอธิบายวิธีแก้ไขปัญหาที่มีประสิทธิภาพ MotoTribe เชื่อมโยงกับหัวข้อเดียวกัน แต่ในช่วงเวลาของคำถามของเขาไม่มีตัวอย่างการทำงานในหน้านั้น ตอนนี้มีดังนี้:
ในโมดูลของคุณใช้hook_views_api()
:
function MODULENAME_views_api() {
return array(
'api' => 3,
);
}
จากนั้นเพิ่มไฟล์ใหม่ลงในโมดูลของคุณชื่อ MODULENAME.views.inc และนำไปใช้hook_views_query_alter()
:
function MODULENAME_views_query_alter(&$view, &$query) {
if ($view->name == 'whatever_your_view_is_called') {
$query->where[0]['type'] = 'OR';
}
}
ยังต้องระวังข้อแม้นี้:
เห็นได้ชัดว่าตัวกรอง "เนื้อหา: เผยแพร่ (ใช่)" ที่มาพร้อมกับทุกมุมมองถือว่าเป็นส่วนหนึ่งของกลุ่มตัวกรองเดียวกันกับตัวกรองเชิงบริบท (กลุ่ม 0) ดังนั้นเพื่อให้มุมมองของฉันแสดงเฉพาะโหนดที่เผยแพร่ซึ่งเป็นของกลุ่มใด ๆ ที่ระบุโดยตัวกรองเชิงบริบท (เผยแพร่และ (arg1 OR arg2 OR ... )) ฉันต้องย้าย "เนื้อหา: เผยแพร่ (ใช่)" ลงใน กลุ่มตัวกรองใหม่ (ใช้กล่องโต้ตอบ "และ / หรือจัดเรียงใหม่") โปรดทราบว่า UI ไม่แสดงตัวกรอง "เนื้อหา: เผยแพร่ (ใช่)" แตกต่างกันหลังจากที่ฉันย้ายไปไว้ในกลุ่มใหม่ (ไม่มีกลุ่มอื่น ๆ ) แต่ในวัตถุคิวรีที่ส่งผ่านเข้าไปhook_views_query_alter()
นั้นได้ย้าย จากกลุ่ม 0 ไปเป็นกลุ่ม 1 ทำให้โค้ดในฟังก์ชั่นด้านบนไม่ส่งผลกระทบอีกต่อไป