我希望在用户创建新内容后重定向用户,而不是将其引导至内容的“查看”页面。
我已经看到过使用hook_alter或者其他东西,但是我对drupal很新,甚至不确定这意味着什么?
谢谢!
答案 0 :(得分:3)
当你提到你是Drupal的新手时,我建议你看看Rules module。您可以为已保存/更新的内容添加触发器并添加操作,以将用户重定向到特定页面。
但是,您可以使用form_alter挂钩在轻量级自定义模块中执行相同操作。
首先,找到表单的表单ID。对于节点表单,它是[node-type] _node_form。 然后,您可以添加要在提交表单时执行的新提交函数。在此提交处理程序中,设置重定向路径。
见this guide on a basic how-to on creating a module。 您的模块代码类似于下面的内容:
<?php
function mymodule_mytype_node_form_alter(&$form, &$form_state) {
$form['#submit'][] = 'mymodule_node_submit_do_redirect';
}
function mymodule_node_submit_do_redirect($form, &$form_state) {
$form_state['redirect'] = 'my_custom_destination';
}
更简单的方法是在节点表单的URL中设置目标。
例如,如果您打开http://example.com/node/add/mytype?destination=my_custom_destination
,您将被重定向到该URL而不是节点视图页面。
答案 1 :(得分:0)
在创建新模块之后,使用Drupal 7可以使用该功能! 将以下PHP代码放入.module文件:
<?php
function custom_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == '[node-type]_node_form') {
$form['actions']['submit']['#submit'][]= 'my_custom_submit_handler';
}
}
function my_custom_submit_handler($form, &$form_state) {
$form_state['redirect'] = 'http://www.expamle.eu/?q=node/2';
}
您只需要用您的节点类型名称(例如:example_node_form)更改[node-type] _node_form,并使用正确的URL更改http://www.expamle.eu/?q=node/2。