W Drupal 7 z włączonym modułem Views an Date , filtrowanie widoku według daty było dość łatwe: interfejs użytkownika po prostu dał ci taką możliwość.
Jednak w Drupal 8 pole daty i widoki są częścią rdzenia, ale jeśli wybierzesz pole zakresu dat jako filtr w widokach, nie będziesz już mieć opcji specyficznych dla daty, ale pokaże tylko opcje filtrowania dla pól tekstowych:
Opcje specyficzne dla daty są jednak dostępne dla wewnętrznych wartości dat, takich jak „Treść: Zmieniona”
Ponieważ chciałbym wyświetlać tylko określone węzły, z datą przed lub po rzeczywistej dacie, gdzie data jest określona w niestandardowym polu zakresu dat, nie odpowiada to moim potrzebom.
Jak mogę filtrować widok w Drupal 8 według pola daty z operacjami specyficznymi dla daty?
Odpowiedzi:
Zaskakująco nie jest to jeszcze możliwe w przypadku Drupala 8. Ale istnieje długa historia prób jej uruchomienia: https://www.drupal.org/node/2786577 Wydaje się , że ostatnia łatka , którą znajdziesz w tym poście, działa. Możesz go pobrać i zastosować, używając następujących poleceń:
Jeśli
git
nie jest dostępny na twoim serwerze, spróbuj:Aby zastosować łaty, musisz najpierw przejść do
core
folderu. I pamiętaj, że musisz ponownie zainstalować tę poprawkę po dokonaniu podstawowej aktualizacji. (To do bani!) Miejmy więc nadzieję, że bogowie Drupal wkrótce wprowadzą to do rdzenia!źródło
drush updatedb --entity-updates
Musiałem przefiltrować typ zawartości zawierający daty aukcji na trzy grupy (teraz online, nadchodzące i gotowe do rejestracji). Ponieważ dotyczyło to wielu zmian, napisałem wtyczkę na podstawie tego artykułu: https://www.webomelette.com/creating-custom-views-filter-drupal-8
Zasadniczo robi trzy rzeczy: - Konwertuj daty w polu na lokalną datę i godzinę. - Filtr ma trzy możliwe ustawienia „teraz online”, „nadchodzące” i „inne” - Na podstawie ustawień dodaje do zapytania możliwe klauzule where
Działa i wydaje się być odporny na przyszłe aktualizacje.
źródło
Za pomocą wtyczki filtra interwałowego możesz wybrać dwa pola, które będą używane odpowiednio jako data minimalna i maksymalna, wprowadza to pojęcie zakresu. Następnie możesz filtrować widoki, określając datę, która musi być zawarta lub nie zawierać się w zakresie.
Przykłady : https://github.com/barsan-ds/interval-filter
źródło
Obecnie Widoki nie są bardzo świadome zakresów dat. Może filtrować według daty rozpoczęcia lub zakończenia jako osobne filtry, ale nie jako zakres dat jako całość.
Aby włączyć filtrowanie na podstawie zakresu dat, utworzyłem moduł Widoki Filtry zakresu dat . Obecnie ma 3 dodatkowe filtry dla pól Zakres Datetime:
Obejmuje
Filtruje według zakresów dat, które obejmują dostarczoną datę.
Pokrywają się
Filtruje według zakresów dat, które pokrywają się z podanym zakresem dat.
Kończy się przez
Filtruje według zakresów dat, które kończą się podaną datą. Odpowiednik „Data końcowa <= dostarczona data”. Przydatne w przypadku zgrupowanych filtrów podczas korzystania z „Data rozpoczęcia”.
źródło
Data wyskakująca Ten moduł służy do tego celu.
źródło