Alte Datefields automatisch löschen mit Rules
am 08.09.2010 - 14:14 Uhr in
Ich habe auf meiner Internetseite zwei Inhaltstypen die ein ckk-datetime-field benutzen mit dem Namen field_events, mit dem dem Inhalt mehere Daten zugeordnet werden.
Nun möchte ich: a.) jeden Tag alle Datumseinträge löschen, bei denen das eingetragene Datum älter als heute ist, und b.) den kompletten Node löschen, sobald kein Datumsfeld mehr vorhanden ist.
Wie bringe ich nun Rules dazu, dass es jeden Tag erkennt, welche field_events-Einträge ein Datum beinhalten, das älter als heute ist?
Ich bin jetzt auf "Neue Regel erstellen" und habe dort "Cron-Wartungsaufgaben werden durchgeführt" ausgewählt. Aber jetzt werde ich ratlos. Was muss ich eingeben, damit die Werte "heute" und der Inhalt von field_events verglichen werden? Oder ist das gar nicht möglich?
Gibt es überhaupt einen Token für das aktuelle Datum?
- Anmelden oder Registrieren um Kommentare zu schreiben
Das lässt sich auf jeden Fall
am 08.09.2010 - 15:01 Uhr
Das lässt sich auf jeden Fall über PHP-Auswertung machen. Die date-Funktion gibt das aktuelle Datum.
Leider sprichst du mit einem
am 08.09.2010 - 15:08 Uhr
Leider sprichst du mit einem Laien. Was muss ich bei PHP-Auswertung eintragen?
Vielleicht solltest du dir
am 08.09.2010 - 15:23 Uhr
Vielleicht solltest du dir erstmal ein PHP-Tutorial anschauen, bevor du per PHP in der Datenbank rumlöschst.
Token für das aktuelle Datum?
am 09.09.2010 - 18:32 Uhr
Deswegen hätte ich gerne das Problme mit dem Rules Modul gelöst. Da muss ich mich nicht erst in php einarbeiten. Aber ich weiß nicht, was ich als Vergleichswert eintragen muss? Gibt es denn einen Token für das aktuelle Datum?
Oder gibt es ein anderes Modul, dass ähnlich funktioniert wie rules?
Zitat: Gibt es denn einen
am 09.09.2010 - 18:43 Uhr
Gibt es denn einen Token für das aktuelle Datum?
Nicht dass ich wüsste. Höchstens die Date-Funktion von PHP
Oder gibt es ein anderes Modul, dass ähnlich funktioniert wie rules?
Workflow, wird dir aber vermutlich auch nichts bringen.
Da muss ich mich nicht erst in php einarbeiten.
Wäre aber eine ganz sinnvolle Zeitinvestition.
Außerdem, auch wenn du ein Token für das aktuelle Datum hättest - wie willst du dann über Rules alle infrage kommenden Nodes prüfen?
Aktueller Token ist [value]
am 10.09.2010 - 11:28 Uhr
Warum kommt man auf das naheliegenste nicht sofort? Habe in der drupaleigenen Hilfedatei mir alle tokens anzeigen lassen. Habe jetzt erst entdeckt, dass es so etwas gibt.
Der Wert für das aktuelle Datum ist [value]. Habe nun als numerischer Vergleich eingegeben den Token des Datumfeldes ist weniger als [value]. Leider hat er nicht nur die Nodes gelöscht, in die ein solches Datum eingegeben war, sondern alle nodes, die mit node reference Feldern verknüpft waren gleich mit. Riesenärgenis. Gott sei Dank habe ich noch einen dump der Datenbank, wenn auch leider kein ganz aktueller mehr.
Kann man das irgendwie verhindern?
Du könntest versuchen, vorher
am 10.09.2010 - 11:54 Uhr
Du könntest versuchen, vorher die Referenz-Felder zu leeren.
Voerst andere Lösung
am 13.09.2010 - 15:50 Uhr
Im Moment habe ich das Problem vertagt. Zudem kam noch das Problem hinzu, dass vielen Events mehrere Termine zugeordnet waren, und der node bereits komplett gelöscht wurde sobald der erste Termin verstrichen war.
Es gibt bei Rules wohl keine Möglichkeit nur einen einzelnen CKK Feld Eintrag zu löschen, sondern nur den gesamten node.
Solange es auf meiner Seite noch nicht viele Einträge gibt, werde ich über views mir veraltete Termine anzeigen lassen und von Zeit zu Zeit von Hand löschen. Später werde ich vielleicht mal wirklich mich an ein php Skript wagen, oder jemand suchen, der das für mich machen kann. Wer Ideen hat, kann sich gerne melden.