1
ユーザーが確認フォームを使用せずにサイトのノードを削除できるようにする最良の方法を探しています。私はform_alterを使用して、成功しないでカスタム送信関数に人を誘導しようとしました。バイパスノード削除の確認フォームをDrupalで
誰でもこれを試しましたか?
ユーザーが確認フォームを使用せずにサイトのノードを削除できるようにする最良の方法を探しています。私はform_alterを使用して、成功しないでカスタム送信関数に人を誘導しようとしました。バイパスノード削除の確認フォームをDrupalで
誰でもこれを試しましたか?
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();
}
ありがとうございます!それはまさに私が必要としていたものです。 –
こんにちは、このコードを修正して、コンテンツタイプが= 'contentype'の場合にのみこの手順をスキップできますか?私はそれを行う方法を理解することはできません。 – Shyghar
@Shyghar:あなたの 'my_node_delete_function'には条件を使います:' if($ node-> type == 'contenttype'){node_delete($ node-> nid); /*...*/} else {/ *削除前の確認フォーム* /} ' –