Oluşturma sırasında düğüm değiştirme tarihini ayarlamak için Drupal nasıl durdurulur?


9

Bu, özel geçiş komut dosyası oluşturmayla ilgili sorunlarım hakkında ikinci sorum.

Sadece yeni düğümler oluşturuyorum ve güncellemeleri umursamıyorum.

Kod:

        $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);

Örneğin, değiştirdiğim $ değeri 0 olarak ayarlandı ve kaydettikten sonra yönetici tarih listesinde bu tarih satırının güncel datetime değerine sahip güncellenmiş sütununu görüyorum.

Yanıtlar:


14

changedDüğüm nesnesinde, örneğin $node->modifiedaramadan önce geçiş komut dosyanızda özel bir özellik ayarlayıp node_save()ardından node_presave kancasını uygulayarak orijinal saati koruyabilmeniz gerekir :

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

Bu, uygulanan tüm modülleri çağırmadan önce node_save()ayarlandığı $node->changediçin çalışır hook_node_presave().


Evet% 100 çalışıyor :)
Codium

1
Şüpheliyim, bunun için vurulurum, ancak benim gibi, bir modülün parçası olmayan drush ile kısa ömürlü bir senaryo çalıştırıyorsunuz ve sadece bir kanca uygulamak için bir modül uygulamak istemiyorsunuz. db_query('UPDATE {node} SET created=:created, changed=:changed WHERE nid=:nid', array(':created'=>$whatever,':changed'=>$whatever,':nid'=>$node->nid));kaydettikten sonra çalışır .
artfulrobot

Bir kanca kadar garip bir şey yapmaktan nefret ediyorum (değişiklik tamamen farklı bir kod segmentinde gerçekleştiği için garip), ama bu drupal'ın hatası, senin değil. +1
Kenny Wyland
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.