วิธีใช้ตัวกรองเชิงบริบทมุมมองหรือ


18

หลังจากเรียกดูเน็ตและ SE ในขณะที่ดูเหมือนว่าสำหรับฉันไม่มีวิธีที่ดีในการรวม 2 contextual filtersกับ OR (แทนที่จะเป็นค่าเริ่มต้นและ)

โพสต์นี้กล่าวถึงPHP สับและนี่โพสต์มีการเชื่อมโยงบางอย่างไปยังประเด็นที่ระบุการเปลี่ยนแปลงล่าสุดในมุมมอง 7.x-3.1 นอกจากนี้ยังกล่าวถึงการใช้hook_views_query_alter(&$view, &$query)เพื่อปรับเปลี่ยนมุมมอง

ใครบ้างมีตัวอย่างการทำงานหรือการแก้ปัญหาที่ดีกว่า


ฉันไม่คิดว่าจะมีทางออกที่ดีกว่า ณ ตอนนี้ ดังที่ได้กล่าวไว้ในหัวข้อที่คุณชี้ว่าเป็นปัญหาที่เกิดขึ้นอย่างต่อเนื่อง ฉันสะดุดกับปัญหาเดียวกันในสัปดาห์นี้และต้องหาวิธีแก้ไขพร้อมไฟล์แนบ แต่แล้วมันไม่ได้ให้รายการแบบผสม แต่มีสองรายการที่เชื่อมต่อซึ่งไม่ตรงกับความต้องการทั้งหมด
Countzero

คำตอบ:


7

ลองใช้โปรแกรมแก้ไขในปัญหานี้: ดึงค่าตัวกรองจากอาร์กิวเมนต์

อนุญาตให้คุณส่งค่าจากตัวกรองเชิงบริบทไปยัง "ตัวกรองปกติ" ที่นั่นคุณสามารถทำตามเงื่อนไขขั้นสูงของคุณ


7

เธรดความคิดเห็นที่เริ่มต้นที่นี่จะอธิบายวิธีแก้ไขปัญหาที่มีประสิทธิภาพ 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 ทำให้โค้ดในฟังก์ชั่นด้านบนไม่ส่งผลกระทบอีกต่อไป


1
มันจะดีกว่าอย่างน้อยถอดความความเกี่ยวข้องของการอ้างอิงถึงคำถามของ OP ลิงก์คำตอบเฉพาะลิงก์ไม่ได้รับการสนับสนุนเนื่องจากลิงก์อาจไม่คงอยู่
Triskelion

@Triskelion: อ่าคุณพูดถูก ฉันแก้ไขคำตอบของฉันเพื่อแก้ไข
coredumperror

4

มีโมดูลที่เปลี่ยนแปลงตัวจัดการของ Views เพื่อสร้างตัวกรองเชิงบริบทที่จะใช้กับหรือแทนที่จะเป็น AND: มุมมองตัวกรองบริบทหรือ


ฉันต้องการสร้างมุมมองที่มีเนื้อหาจาก "ผู้ใช้ปัจจุบัน" + "เนื้อหาจากผู้ใช้ที่ถูกตั้งค่าสถานะ (ผู้ใช้ปัจจุบันได้ตั้งค่าสถานะโดยใช้การตั้งค่าสถานะติดตาม [ผู้ใช้])"
Umair

2

สถานการณ์ที่มีตัวกรองตามบริบทและกลุ่มตัวกรองนั้นเยือกเย็น นี่คือเธรดบนทำเกี่ยวกับ toppic นี้ซึ่งมีโซลูชันเดียวกับที่ระบุโดย @CoreDumpError

https://drupal.org/node/1451218

นอกจากนี้ที่นี่ยังเป็นโมดูลที่สามารถช่วยแก้ไขตัวกรองเชิงบริบทและที่เปิดเผย ... Views Harmonizer Filter

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