Puncte:0

Creați un filtru de vizualizare pentru a găsi un nod care nu are valoare într-un anumit câmp

drapel ru

Încerc să creez un filtru expus pentru vizualizare care să permită găsirea nodurilor care au un câmp specific fără valoare. Este un câmp care listează termeni de taxonomie.

Acest lucru nu este posibil cu vedere. Când selectez să expun operatorul „IS NULL”, filtrul care este returnat prin vizualizare nu are sens, așa cum puteți vedea în imaginile următoare

introduceți descrierea imaginii aici

Filtrul după ce aleg această opțiune:

introduceți descrierea imaginii aici

Într-o altă problemă despre stackexchange, cineva sugerează să folosești un filtru expus mai bine, iar unii oameni aprobă. Dar poate pentru că problema a fost pentru Drupal 7 sau pentru alt tip de câmp, această opțiune nu este disponibilă cu modulul pentru domeniul meu.

Creez un filtru personalizat care afișează o casetă de selectare în filtru care modifică interogarea pentru a afișa conținuturi care au acest câmp gol dacă bifați.

Cu EntityQuery, știu că este posibil să faci o interogare care să returneze entități cu un câmp gol cu ​​funcția notExist pe câmp.

Dar în cazul interogării pentru vizualizare, nu am idee cum să spun că vreau conținut care nu are nicio legătură cu acest câmp. Cred că pot avea asta cu o subselectare în interogare, dar nu am idee cum să o construiesc.

Puncte:0
drapel fr
  1. Du-te la vedere
  2. Adăugați un filtru pentru „Etichete (field_tags)”
  3. Selectați operatorul „Este gol (NULL)”.

Acum se vor afișa numai nodurile fără etichete

drapel ru
Nu era clar în postarea mea inițială, dar filtrul meu este expus de fapt, așa că, din păcate, nu este atât de simplu
hoanns avatar
drapel fr
Deci nu puteți expune operatorul „Este gol (NULL)”? și lăsați utilizatorul să o selecteze? Sau nu primesc ceva
drapel ru
Nu, asta arată un câmp de text sau o listă de termeni care nu are sens pentru UX.
Puncte:0
drapel ru

Așadar, în sfârșit am aflat cum să o fac cu o îmbinare stânga și să verific dacă este nulă sau nu, în funcție de valoarea casetei de selectare (dacă este bifată, ar trebui completată; dacă nu, ar trebui să fie goală). Iată filtrul meu:

<?php

spațiu de nume Drupal\modulul_meu\Plugin\views\filter;

utilizați Drupal\Core\Database\Query\Condition;
utilizați Drupal\views\Plugin\views\filter\BooleanOperator;
utilizați Drupal\views\Views;

/**
 * Filtre pentru a detecta dacă un conținut are termen de taxonomie informat în field_tags.
 *
 * @ingroup views_filter_handlers
 *
 * @ViewsFilter(„has_tags_filter”)
 */
clasa HasTagFilter extinde BooleanOperator {

  /**
   * Funcția de ajutor care creează interogarea.
   */
  interogare de funcție publică () {
    $configurare = [
      'table' => 'node__field_tags',
      'field' => 'entity_id',
      'left_table' => 'node_field_data',
      'left_field' => 'nid',
      'operator' => '=',
    ];
    $join = Views::pluginManager('join')->createInstance('standard', $configuration);
    $this->query->addRelationship('node__field_tags', $join, 'node_field_data');

    dacă ($aceasta->valoare == 1) {
      $this->query->addWhere('ȘI', 'node__field_tags.field_tags_target_id', '', 'NU ESTE NULL');
    } altfel {
      $this->query->addWhere('ȘI', 'node__field_tags.field_tags_target_id', '', 'IS NULL');
    }
  }
}

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.