1

寻找允许用户在无需使用确认表单的情况下删除站点上的节点的最佳方式。我尝试使用 form_alter 将人们引导到自定义提交功能,但没有成功。

有人试过这个吗?

4

1 回答 1

10

假设 drupal 7,node/%/delete 菜单条目直接连接到 node_delete_confirm 表单。您可以使用 hook_menu_alter 对其进行修改,并将函数从 drupal_get_form 更改为您自己设计的页面回调,该回调只会删除节点。

例子:

在您的模块文件中,您需要:

function mymodule_menu_alter(&$items) {
  $items['node/%node/delete']['page callback'] = 'my_node_delete_function';
  $items['node/%node/delete']['page arguments'] = array(1);
  $items['node/%node/delete']['module'] = 'mymodule';
  $items['node/%node/delete']['file'] = 'mymodule.pages.inc';
}

在您的 mymodule.pages.inc 文件中,您需要:

function my_node_delete_function($node) {
  // Taken from node modules node_delete_confirm submit handler
  node_delete($node->nid);
  watchdog('content', '@type: deleted %title.', array('@type' => $node->type, '%title' => $node->title));
  drupal_set_message(t('@type %title has been deleted.', array('@type' => node_type_get_name($node), '%title' => $node->title)));

  // Do a drupal goto here to preserver the 'destination' parameter
  drupal_goto();
}
于 2012-05-14T16:22:57.103 回答