Для клонирования ноды можно использовать Entity API. Для это нужно сбросить два параметра nid и vid.

<?php
$nid = 1;
$entity = entity_load('node', array($nid));
if(!empty($entity)){
  $node = reset($entity);

  // Сбрасываем ID, чтобы создалась новая нода
  $node->nid = FALSE;
  $node->vid = FALSE;

  $entity_wrapper = entity_metadata_wrapper('node', $node);

  // Здесь мы можем изменить любое поле созданное через интерфейс (Field API/CCK)
  $entity_wrapper->my_custom_field->set('Some value');

  $entity_wrapper->save();
}

На заметку: у модуля entity есть что-то подобное - entity_ui_clone_entity(), но эта функция не сбрасывает id ревизии из-за чего происходит ошибка при сохранении.

Другие посты