我想在我的用户创建一段新内容后重定向他们,而不是将他们引导到内容的“查看”页面。
我已经看到提到使用 hook_alter 或其他东西,但我对 drupal 真的很陌生,甚至不确定这意味着什么?
谢谢!
我想在我的用户创建一段新内容后重定向他们,而不是将他们引导到内容的“查看”页面。
我已经看到提到使用 hook_alter 或其他东西,但我对 drupal 真的很陌生,甚至不确定这意味着什么?
谢谢!
正如您提到您是 Drupal 的新手,我建议您看一下规则模块。您可以为已保存/更新的内容添加触发器并添加操作,以将用户重定向到特定页面。
但是,您可以使用 form_alter 钩子在轻量级自定义模块中执行相同操作。
首先,找到表单的表单ID。对于节点形式,它是 [node-type]_node_form。然后,您可以添加一个新的提交函数,以便在提交表单时执行。在此提交处理程序中,设置重定向路径。
有关创建模块的基本方法,请参阅本指南。您的模块代码如下所示:
<?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 而不是节点视图页面。
在创建新模块后,这对我使用 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';
}
您只需将 [node-type]_node_form 更改为您的节点类型名称(例如:example_node_form),并将http://www.expamle.eu/?q=node/2更改为正确的 URL。