Score:0

สร้างตัวกรองมุมมองเพื่อค้นหาโหนดที่ไม่มีค่าในฟิลด์เฉพาะ

ธง ru

ฉันกำลังพยายามสร้างตัวกรองที่เปิดเผยสำหรับการดูซึ่งอนุญาตให้ค้นหาโหนดที่มีฟิลด์เฉพาะที่ไม่มีค่า เป็นฟิลด์ที่แสดงรายการคำศัพท์ทางอนุกรมวิธาน

สิ่งนี้ไม่สามารถทำได้ด้วยมุมมอง เมื่อฉันเลือกแสดงโอเปอเรเตอร์ "IS NULL" ตัวกรองที่ส่งคืนโดยมุมมองจะไม่สมเหตุสมผลอย่างที่คุณเห็นในภาพต่อไปนี้

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

ตัวกรองหลังจากที่ฉันเลือกตัวเลือกนี้:

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

อีกปัญหาหนึ่งเกี่ยวกับ stackexchange มีคนแนะนำให้ใช้ตัวกรองแสงที่ดีกว่า และบางคนก็เห็นด้วย แต่อาจเป็นเพราะปัญหานี้เกิดขึ้นกับ Drupal 7 หรือฟิลด์ประเภทอื่น ตัวเลือกนี้จึงไม่สามารถใช้ได้กับโมดูลสำหรับฟิลด์ของฉัน

ฉันสร้างตัวกรองแบบกำหนดเองซึ่งแสดงช่องทำเครื่องหมายในตัวกรองซึ่งแก้ไขข้อความค้นหาเพื่อแสดงเนื้อหาที่มีฟิลด์นี้ว่างหากทำเครื่องหมาย

ด้วย EntityQuery ฉันรู้ว่ามันเป็นไปได้ที่จะสร้างแบบสอบถามที่ส่งคืนเอนทิตีพร้อมฟิลด์ว่างเปล่าโดยมีฟังก์ชัน notExist บนฟิลด์

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

Score:0
ธง fr
  1. ไปที่มุมมอง
  2. เพิ่มตัวกรองสำหรับ "แท็ก (field_tags)"
  3. เลือกตัวดำเนินการ "ว่างเปล่า (NULL)"

ตอนนี้จะแสดงเฉพาะโหนดที่ไม่มีแท็ก

ru flag
มันไม่ชัดเจนในโพสต์แรกของฉัน แต่ตัวกรองของฉันถูกเปิดโปงจริง ๆ ดังนั้นจึงไม่ง่ายนักที่น่าเศร้า
hoanns avatar
fr flag
คุณไม่สามารถเปิดเผยตัวดำเนินการ "ว่างเปล่า (NULL)" ได้หรือไม่ และให้ผู้ใช้เลือก? หรือฉันไม่ได้รับบางสิ่งบางอย่าง
ru flag
ไม่ นั่นเป็นการแสดงฟิลด์ข้อความหรือรายการคำศัพท์ที่ไม่สมเหตุสมผลสำหรับ UX
Score:0
ธง ru

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

<?php

เนมสเปซ Drupal\my_module\Plugin\views\filter;

ใช้ Drupal\Core\Database\Query\Condition;
ใช้ Drupal\views\Plugin\views\filter\BooleanOperator
ใช้ Drupal\views\Views;

/**
 * ตัวกรองเพื่อตรวจสอบว่าเนื้อหามีคำอนุกรมวิธานที่แจ้งใน field_tags หรือไม่
 *
 * @ingroup views_filter_handlers
 *
 * @ViewsFilter("has_tags_filter")
 */
คลาส HasTagFilter ขยาย BooleanOperator {

  /**
   * ฟังก์ชันตัวช่วยที่สร้างแบบสอบถาม
   */
  แบบสอบถามฟังก์ชันสาธารณะ () {
    $การกำหนดค่า = [
      'ตาราง' => 'node__field_tags',
      'field' => 'entity_id',
      'left_table' => 'node_field_data',
      'left_field' => 'นิด',
      'ตัวดำเนินการ' => '=',
    ];
    $join = Views::pluginManager('join')->createInstance('มาตรฐาน', $configuration);
    $this->query->addRelationship('node__field_tags', $join, 'node_field_data');

    ถ้า ($ this->value == 1) {
      $this->query->addWhere('AND', 'node__field_tags.field_tags_target_id', '', 'ไม่เป็นโมฆะ');
    } อื่น {
      $this->query->addWhere('AND', 'node__field_tags.field_tags_target_id', '', 'IS NULL');
    }
  }
}

โพสต์คำตอบ

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