绕过节点删除Drupal中的确认表单

时间:2012-05-09 12:45:50

标签: drupal

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

有人试过这个吗?

1 个答案:

答案 0 :(得分:10)

假设drupal 7,节点/%/ 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();
}