Puncte:1

Modificați criteriile de sortare utilizând views_query_alter

drapel fi
KTM

Am o vizualizare pentru tipul de conținut evenimente cu câmpuri numele evenimentului, Descriere, rezumat, event_start_date, etc. Care este cerinta mea:

  1. Sortați evenimentele în ordine crescătoare de data_evenimentului egală sau mai mare decât data curentă (evenimente viitoare)
  2. Sortați evenimentele în ordine descrescătoare a event_date mai mică decât data curentă (Evenimente trecute)

NOTĂ: datele viitoare ar trebui să apară mai întâi și apoi datele trecute.

de exemplu, date și rezultate așteptate

date de exemplu

introduceți descrierea imaginii aici

rezultat asteptat

introduceți descrierea imaginii aici

Prin setările normale de vizualizare a interfeței de utilizare, nu am putut realiza acest lucru. asa ca am incercat views_query_alter cârlig pentru a modifica criteriile de sortare. dar nu am putut realiza asta. Orice ajutor?

Ce am incercat

/**
 * Implementează hook_views_query_alter
 */
function news_t1_views_query_alter(ViewExecutable $view, QueryPluginBase $query) {
  if($view->id() == 'evenimente'){
    $query->orderby[0]['field'] = "CASE node__field_st_field_st_value WHEN DATE(node__field_st_field_st_value) >= CURDATE() END";
    $query->orderby[0]['direction'] = "ASC";
    $query->orderby[1]['field'] = "CASE node__field_st_field_st_value WHEN DATE(node__field_st_field_st_value) < CURDATE() END";
    $query->orderby[1]['direction'] = "DESC";
    //$view->set_items_per_page(5);  
  }
}

node__field_st este numele câmpului event_date.

Actualizare după răspunsul lui @Patrick Kenny

Soluția ta funcționează excelent. Mulțumiri!. am adaugat un Global: zona de vizualizare (Global: zona de vizualizare) în subsolul ecranului principal. Dar există o mică eroare care trebuie eliminată. Am filtre contextuale și expuse în vizualizarea principală care este moștenit (această parte este în regulă). Dar problema este că titlul se repetă în afișajul atașat. vreo modalitate de a scăpa de asta? captură de ecran atașată.

introduceți descrierea imaginii aici

drapel cn
Există mai multe moduri de a scăpa de titlu. Personal, aș folosi un șablon Views, dar aș sfătui să deschideți o nouă întrebare despre „Cum să eliminați al doilea titlu când utilizați un atașament Views?” și altcineva poate avea o idee mai bună.
Puncte:1
drapel cn

Obiectiv: afișați evenimentele viitoare, apoi evenimentele trecute.

Cel mai simplu mod de a implementa acest lucru în întregime prin interfața de utilizare View este să adăugați un al doilea afișaj la vizualizare.

Pași de bază

  1. Creați afișajul principal. Configurați evenimentele să fie afișate după cum doriți.
  2. Setați să sortați după evenimentele viitoare și filtrați astfel încât să fie afișate numai evenimentele viitoare.
  3. Adăugați un Atașament afişa. Pentru acest afișaj, modificați filtrul (Această pagină: suprascrie) pentru a afișa numai evenimentele trecute și pentru a modifica sortarea în același mod.
  4. În Subsol din afișajul principal, adăugați atașamentul.
KTM avatar
drapel fi
KTM
Ne pare rău că mai adaug încă o cerință, ca să fie afișat într-o singură listă (un singur afișaj). Fără file
drapel cn
@KTM Răspunsul meu va produce o vizualizare cu tot conținutul dintr-o listă mare. Vor exista două file separate în ecranele de administrare a interfeței de utilizare Vizualizări, dar vizitatorii vizualizării reale vor vedea totul pe o singură pagină.
KTM avatar
drapel fi
KTM
Wow atunci va fi grozav! O sa incerc asta :)

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.