使用 Drupal 6 中的图书复制模块复制图书的示例调用(假设存在图书 ID 为 142 的节点):
www.examplesite.com/book_copy/copy/142
当调用上述站点并复制节点 142 时,它会通知用户该书已被复制,但会在该书副本的“大纲”选项卡上启动用户。我认为让用户进入书籍副本的“编辑”选项卡会更直观,这样用户就可以立即开始编辑书籍的信息。与在“编辑”选项卡中设置书籍的实际初始详细信息相比,大纲并不重要。
有谁知道如何修改模块以将用户转发到“编辑”选项卡?我查看了代码,只是没有点击。我在准确解释此图书模块的幕后工作方式时遇到问题。任何建议将不胜感激。谢谢!
最佳答案
我没有使用 book_copy
模块的经验,但查看 book_copy_copy_book()
函数的最后几行:
$book = node_load(array('nid' => $newbid));
$book->bookcopydata = array();
$book->bookcopydata['message'] = t('Successfully cloned "%message", now viewing copy.', array('%message' => $message));
if (_book_outline_access($book)) {
$book->bookcopydata['url'] = 'node/'. $newbid .'/outline';
}
else {
$book->bookcopydata['url'] = 'node/'. $newbid;
}
// The function signature is: hook_book_copy_goto_alter(&$data);
drupal_alter("book_copy_goto", $book);
drupal_set_message($book->bookcopydata['message']);
drupal_goto($book->bookcopydata['url']); // requires user has 'administer book outline' or can access personal books
如果用户没有“管理图书大纲”权限,他将自动结束在新图书页面。如果您希望用户始终在新书编辑页面结束,您可以只需替换整个 if
if (_book_outline_access($book)) { ... }
从其 else 部分进行赋值并调整 url 的子句:
$book->bookcopydata['url'] = 'node/'. $newbid . '/edit';
但是,不建议直接更改模块代码(更新冲突),特别是如果模块提供了一个钩子(Hook)来实现“从外部”所需的更改。因此,在您的情况下,“正确”的方法是在自定义模块中实现提供的 hook_book_copy_goto_alter(&$data)
,以便根据您的喜好调整重定向 URL:
function yourModule_book_copy_goto_alter(&$new_book) {
$new_book->bookcopydata['url'] = 'node/'. $new_book->nid . '/edit';
}
关于drupal - 如何修改 Drupal 6 中的图书复制模块,以便在制作副本后将用户转发到不同的起始选项卡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1864791/