2009-12-08 2 views
2

По умолчанию модуль Book Copy создаст новую книгу с тем же именем, что и копируемая книга. Это может запутаться и на самом деле заставило одного из разработчиков сайта случайно удалить оригинальную книгу, которая была ссылкой в ​​меню и т. Д. И оставила сайт в странном состоянии.Как изменить модуль Book Copy в Drupal 6, чтобы изменить имя копии на другое имя?

Если бы имя копии было чем-то иным, чем имя оригинала, эта проблема никогда не возникла бы. Я прорыл код, но просто не мог понять. Любая помощь будет оценена. Благодаря!

+0

Изменение имени копии может быть таким же запутанным – pavium

+0

Мне все равно, если это сбивает с толку как таковое. Я просто не хочу, чтобы другие администраторы сайта удаляли исходный файл b/c, привязанный к определенным меню, что копий не будет. Поэтому, если кто-то должен был удалить оригинал ошибочно, а не копию, тогда меню нужно было бы скомпилировать с нуля. –

ответ

0

It оказалось, что я понял это, прежде чем нашел здесь какой-либо ответ. То, что я сделал замену:

$node->title = t('Clone of !title', array('!title' => $node->title)); 

с:

if($node->title == "Project Template"){ 
    $node->title = "New Project From Template"; 
} 
else{ 
    $node->title = t('Clone of !title', array('!title' => $node->title)); 
} 

Внутри lone_node_save функции() из clone_pages.inc файла, связанного с модулем node_clone.

+0

Я создал тип контента, называемый проектом, а затем создал узел типа Project под названием «Шаблон проекта», в котором используется книга. Поэтому, когда я собираюсь получить копию проекта, он клонирует все содержимое книги или Шаблон проекта. Это сделает так, чтобы node_clone функционировал так, как обычно, за исключением узлов с заголовком «Шаблон проекта». –

2

Вы можете использовать hook_book_copy_alter() предлагается в book_copy_copy_book():

... 
// The function signature is: hook_book_copy_alter(&$node, $oldbid, $newbid); 
drupal_alter("book_copy", $node, $bid, $newbid); 
... 

Так, в пользовательском модуле, вы могли бы реализовать следующие достижения измененного заголовка на новом узле:

function yourModule_book_copy_alter(&$node, $oldbid, $newbid) { 
    // Adjust the title ... 
    $node->title = 'Copy of ' .$node->title; // TODO: Change to the variation you want 
    // ... and save the node again 
    node_save($node); 
} 
Смежные вопросы