drupal - 如何修改 Drupal 6 中的图书复制模块,以便在制作副本后将用户转发到不同的起始选项卡?

标签 drupal drupal-6 copy

使用 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/

相关文章:

drupal-6 - 将网络表单提交结果作为 Drupal 6 中的链接?

php - 哪个模块可以生成这个标签云图像?

android - 在 Android 中以编程方式将所有安装 apk 文件备份到 sdcard

python - 在Python中搜索带有扩展名的文件并复制到目录?

image - Drupal 7 : grayscale image to colored at mouse-hover. 使用 ImageStyles 生成的图像

php - 分离 Drupal 模块逻辑和 UI

Drupal AHAH,动态表单扩展

python - Python 如何访问 X11 剪贴板?

drupal - 更改 block 内容

Drupal 作为框架