Frage

Ich muss sowohl am TAG VOR als auch am TAG NACH einem Kalenderereignis eine Erinnerungs-E-Mail versenden.Leider kann ich den Rules Scheduler nicht verwenden, da die Tokens nicht mit PHP manipuliert werden können.Es funktioniert nicht, wenn ich es habe

[node:field_event_date-datetime] -1 day

als geplante Zeit.

Am Ende habe ich zwei „Dummy“-Datumsfelder für TAG VOR und TAG NACH erstellt und versuche, mich in das Formular einzubinden, das Ereignisdatum abzurufen und mithilfe von PHP wie strtotime() a zu addieren/subtrahieren Tag, und machen Sie diese zu den Werten, die in die Datenbank aufgenommen werden sollen.

Ich habe versucht, auf den #submit-Teil des Formulars zu verlinken, aber in phpMyAdmin sind alle Werte NULL.Für diesen Code habe ich nicht einmal das Datum geändert, ich versuche nur, Werte in der Datenbank anzuzeigen.

function mymodule_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == "event_node_form") {
        $form['#submit'][] = '_mymodule_after_build';
        // Makes the fields invisible
        $form["field_event_day_before"]["#access"] = FALSE;
        $form["field_event_day_after"]["#access"] = FALSE;
    }
}

function _mymodule_after_build($form, &$form_state) {
    $eventcopy = array();
    // copy the value part from the Event
    $eventcopy = $form['field_event_date'][0]['#value'];
    // without doing any PHP yet, simply copy the values. Doesn't show up in db.
    $form['field_event_day_before'][0]['#value'] = $eventcopy;
    dsm($form);
    return $form;
}

Ich habe die Tutorials zur Verwendung gelesen Regelplaner mit CCK Und

Ich folge auch Planen Sie den E-Mail-Versand basierend auf dem CCK-Datumsfeld – funktioniert bei mir nicht

Benutze ich die richtigen Haken?Wie kann ich den eingegebenen Datumswert richtig abfangen?

War es hilfreich?

Lösung

Ich glaube nicht, dass Sie Ihr Problem auf die richtige Art und Weise angehen.Wenn Sie versuchen möchten, den von Ihnen vorgeschlagenen Weg einzuschlagen, sollten Sie einen Blick darauf werfen Hook_nodeapi().Sie können Code für die Vorgänge „Einfügen“ und/oder „Speichern“ (oder vielleicht sogar „Vorspeichern“) hinzufügen, damit Sie Ihre aktualisieren können $node->field_event_day_before'][0]['#value'] Und $node->field_event_day_after'][0]['#value'] Felder basierend auf dem event_date-Wert.

Sie möchten jedoch wirklich keine zusätzlichen Felder für das Datum davor und das Datum danach hinzufügen, da Sie diese einfach aus dem Ereignisdatum berechnen können.

Was ich denke bessere Lösung ist einfach umzusetzen Hook_cron() und lassen Sie diese Funktion die Abfrage aller Ereignisse in Ihrer Datenbank durchführen, deren Ereignistag TODAY() +1 ist.Senden Sie für alle diese Ergebnisse eine E-Mail.Führen Sie eine weitere Abfrage durch, die nach Ereignissen sucht, deren Ereignisdatum TODAY() - 1 ist, und senden Sie eine E-Mail mit diesen Ergebnissen.Sie sollten sicherstellen, dass Sie diesen Vorgang nur einmal alle 24 Stunden ausführen.

Andere Tipps

Ich möchte die Antwort dank der Hilfe aus der Gemeinschaft teilen.Wenn Sie das gleiche Problem auflaufen, versuchen Sie dies: generasacodicetagpre.

Der Regeln-Scheduler kann dann von den Feldern DAY_BEFORE / DAY_After-Felder aufnehmen, und Sie können ihre Schnittstelle zur Planung verwenden.

Sie können dies mithilfe des Regelnmoduls tun, ich habe dies in meinem ersten Projekt getan, im Grunde müssen Sie zwei Regeln erstellen, ein Tag zuvor ein Tag und ein anderer für einen Tag danach.Lassen Sie mich wissen, wenn Sie eine Klarstellung wünschen.

danke K

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top