Puncte:0

Creați un filtru de vizualizări personalizate pentru a returna nodurile pe baza zilelor lucrătoare scurse de la un câmp de dată

drapel au

Context: trebuie să produc niște tabele în Vizualizări care să arate entități care au avut o anumită stare (pe baza unui câmp de taxonomie) pentru un număr x de zile lucrătoare. Am configurat deja câmpuri și reguli, astfel încât de fiecare dată când starea entității este schimbată, un câmp de dată și oră este completat cu data și ora curente.

Apoi am creat un modul personalizat care a adăugat câmpuri personalizate la vizualizare care arată câte zile lucrătoare au trecut de la dată și oră. Am crezut că totul a fost groovy până mi-am dat seama că nu pot filtra pe aceste câmpuri personalizate (din motive pe care știu că le înțeleg).

Așa că m-am întors parțial la planșa de desen pentru a reface acest concept, dar ca un filtru personalizat în loc de un câmp... dar întâmpin probleme în a-mi da seama cum să creez acest filtru personalizat în modulul meu. M-am gândit că pot reutiliza scriptul php care ia câmpul de dată și data curentă pentru a calcula câte zile lucrătoare au trecut.

Cu excepția cerinței de zile lucrătoare, aproape că pot face ceea ce vreau din cutie folosind un filtru de date Vizualizări cu un operator „este mai mic sau egal cu” și o valoare de compensare (deci vreau să arăt doar entitățile care sunt mai vechi de două zile, așa că am folosit „-2 zile” pentru valoare).

Edit: Cred că mi-am dat seama. Iată ceea ce cred că va fi procesul de producere a interogării noastre SQL care utilizează zile lucrătoare în loc de zile calendaristice (variabilele pe care le creez sunt pentru acest exemplu și nu literalmente ceea ce voi folosi în cod):

Obțineți ziua și ora curente (pentru acest exemplu vom numi acea dată $) și introduceți-o într-un script PHP care scuipă ce zi ar fi acum 2 zile lucrătoare. Pentru acest exemplu, voi numi acel $oldDate
    Dacă data de astăzi ar fi 2/7/22, aceasta ar fi 2/3/22. Dacă data de astăzi ar fi 2/10/22, aceasta ar fi 2/8/22.
Scădeți $oldDate din $date. Vom numi această valoare $days.
    Dacă data de astăzi ar fi 2/7/22, aceasta ar fi 4. Dacă data de astăzi ar fi 2/10/22, aceasta ar fi 2.
Mai multe $ zile cu 86400, care este numărul de secunde dintr-o zi.
    Dacă data de astăzi ar fi 2/7/22, ar fi 345.600. Dacă data de astăzi ar fi 2/10/22, ar fi 172800. Vom numi această valoare $secunde.
Atunci interogarea noastră SQL ar fi node_field_data.created <= $unixDate-$seconds

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.