it-swarm.com.de

Wie stoppe ich Drupal, um das Änderungsdatum des Knotens bei der Erstellung festzulegen?

Dies ist meine zweite Frage zu meinen Problemen beim Erstellen eines benutzerdefinierten Migrationsskripts.

Ich erstelle nur neue Knoten und kümmere mich nicht um Updates.

Code:

        $node = new stdClass();
        $node->type = 'migrate';
        $node->title = $content['title'];
        $node->language = LANGUAGE_NONE;

        $node->created = (int) date('U',strtotime($content['created']));

        $modified = $content['modified'];               
        if (! empty($modified) && $modified != '0000-00-00 00:00:00') {
            $modified = (int) date('U',strtotime($modified));
        } else {
            $modified = 0;
        }               
        $node->changed = $modified;

        node_object_prepare($node);

        #some lines later
        node_save($node);

Zum Beispiel ist mein $ modifiziert auf 0 gesetzt und nach dem Speichern wird die aktualisierte Spalte dieser Knotenzeile in der Administrator-Inhaltsliste mit dem aktuellen Datum/Uhrzeit-Wert angezeigt.

9
Codium

Sie sollten in der Lage sein, die ursprüngliche changed -Zeit beizubehalten, indem Sie zuerst eine benutzerdefinierte Eigenschaft für das Knotenobjekt festlegen, z. B. $node->modified, In Ihrem Migrationsskript, bevor Sie node_save() und aufrufen Implementieren Sie dann den Hook node_presave:

/**
 * Implements hook_node_presave().
 */
function mymodule_node_presave($node) {
  $node->changed = $node->modified;
}

Dies funktioniert, da node_save()$node->changed Setzt, bevor alle Module aufgerufen werden, die hook_node_presave() implementieren.

14
jhedstrom