Ich habe ein Datumsfeld in meiner Ansicht und wenn ich versuche, zwischen dem ersten und dem letzten Tag des Monats zu filtern, wird in meiner Ansichtsvorschau kein Ergebnis angezeigt.
Hier sind meine Einstellungen. Dieser Filter ist, weil ich das Geburtsdatum aller registrierten Benutzer vergleichen und nur diejenigen drucken muss, deren Wert zwischen dem ersten und dem letzten Tag des Monats liegt.
Hier sind die Screenshots meiner Ansichtseinstellungen:
Hier sind zuerst meine Datumsfeldeinstellungen:
Dann die Filtereinstellungen:
Und schließlich stellen Sie die Filteroption ein, um das Ergebnis zwischen dem ersten und dem letzten Tag des Monats zu erhalten:
Das habe ich bisher erfolglos versucht. Kann mir jemand dabei helfen? Ich möchte dafür kein Modul verwenden. Ich brauche nur diesen Filter funktioniert.
Antworten:
Ich hatte vor einiger Zeit eine ähnliche Anforderung. Ich habe ein kleines Modul mit einem hook_views_query_alter () erstellt . Sie müssen ein bisschen Code schreiben, aber ich denke, es ist eleganter und einfacher zu warten, als PHP-Code in Kontextfiltern in der Benutzeroberfläche der Ansichten hinzuzufügen.
Versuche Folgendes:
In Ihrer .module-Datei
In module.views.inc
quelle
Lange Rede, kurzer Sinn: Verwenden Sie Views Partial Date . Das Bild unten zeigt einige seiner Funktionen (klicken Sie auf das Bild, wenn Sie die Animation nicht sehen).
Warum geht das mit Views nicht?
Ansichten selbst können nur Unix-Zeitstempel verarbeiten . Selbst wenn ein relatives Datum verwendet wird, verwendet der Datumsfilter von Views intern strotime () , um das relative Datum in einen Zeitstempel zu konvertieren, bevor die Filterbedingung zur Abfrage hinzugefügt wird.
Warum dies mit Datumsansichten nicht möglich ist
Date Views ist ein komplexes Tier, das eine Vielzahl von Funktionen für Datumsberechnungen bietet, einschließlich der Unterstützung mehrerer DB-Backends.
Theoretisch könnten Datumsansichten unvollständige Datumsangaben implementieren, aber da sie auch relative Datumsangaben und verschiedene Eingabe-Widgets (wie Datums-Popup) unterstützen, wäre die zusätzliche Validierung und Logik äußerst schwierig zu pflegen.
Was können wir dagegen tun?
Zu diesem Zeitpunkt haben wir festgestellt, dass entweder ein zusätzliches Modul oder ein benutzerdefinierter Code in irgendeiner Form erforderlich ist.
Vor diesem Hintergrund habe ich das Teildatum "Ansichten" erstellt und werde diese Antwort in den folgenden Tagen erweitern, um den Ansatz zu beschreiben, den ich gewählt habe.
quelle
Ok, versuch das mal.
Im Zusammenhang damit .
quelle
Dieser Artikel wird Ihnen helfen ( der auch auf drupal.org zu finden ist ). Sobald Sie damit konfiguriert sind, können Sie den Inhalt zwischen genau zwei Daten filtern.
Sie müssen also ein Standardstartdatum als 1. eines bestimmten Monats und ein Enddatum als nächsten Monat - 1 hinzufügen.
Dies muss über die Standardeinstellungen der Ansichten erfolgen, oder es kann ein kleines Javascript hinzugefügt werden, das diesen bestimmten Feldern einen Standardwert hinzufügt.
quelle
Probieren Sie diese beiden Optionen aus:
Wenn Sie diese Werte in diesen strtotime () -Tester eingeben, werden die entsprechenden Daten bereitgestellt .
quelle
Die SQL-Syntax, die Sie erreichen möchten, ist mit der Funktion SQL MONTH () relativ einfach:
Es gibt jedoch keine Möglichkeit für Views, diese Art von SQL-Ausdruck ohne ein zusätzliches Modul zu erstellen.
quelle
Ich habe dies nicht getestet, aber würde es nicht funktionieren, wenn Sie "Monat" als Granularität auswählen und dann ein einzelnes Datum (das relative "Jetzt" oder ein bestimmtes Datum) als Filterwert verwenden?
quelle
Warum machen Sie sie dazu, benutzerdefinierte Module dafür zu schreiben?
Dies ist ziemlich einfach für:
First day of current month you need to add
" erster Tag von " &for Last day of current month same way
" letzter Tag von "Lesen Sie die Dokumentation von PHP.NET sorgfältig durch.
Hier füge ich einen Screenshot des Datumsfilters meiner Ansicht für relative Daten hinzu.
quelle