ฉันต้องการเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าเว็บที่กำหนดเองหลังจากที่พวกเขาสร้างโหนดหรือแก้ไขมัน
ฉันต้องการเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าเว็บที่กำหนดเองหลังจากที่พวกเขาสร้างโหนดหรือแก้ไขมัน
คำตอบ:
คุณสามารถใช้hook_form_alter
เพื่อเพิ่มตัวจัดการการส่งแบบกำหนดเองซึ่งคุณสามารถตั้งค่าเส้นทางการเปลี่ยนเส้นทาง
ดูFAPIสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการเปลี่ยนเส้นทางแบบฟอร์ม
คุณสามารถสร้างกฎที่เปลี่ยนเส้นทางผู้ใช้ไปยังหน้าใดก็ได้เมื่อพวกเขาสร้างหรือแก้ไขประเภทเนื้อหาที่เฉพาะเจาะจง เมื่อคุณเพิ่มกฎให้เลือก "หลังจากสร้างเนื้อหาใหม่" เพิ่มเงื่อนไขของ "เนื้อหามีประเภท" ส่วนที่คุณต้องทำจะให้ตัวเลือกในการเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าใด ๆ ที่คุณต้องการ
สำหรับการเปลี่ยนเส้นทางหลังจากแก้ไขโหนดเพียงแค่สร้างกฎใหม่และเลือก "หลังจากอัปเดตเนื้อหาที่มีอยู่" เป็นตัวเลือกแรกของคุณ
เมื่อทำสิ่งนี้ตรวจสอบให้แน่ใจว่าไม่ได้ตั้งค่าปลายทางที่เป็นไปได้ซึ่งปกติจะถูกเพิ่มลงใน URL เมื่อคุณคลิกปุ่มแก้ไขเพื่อแก้ไขโหนดที่มีอยู่
แทนที่article
ในMYMODULE_form_article_node_form_alter
ที่มีชื่อเครื่องชนิดเนื้อหาของคุณ
/**
* Implements hook_form_BASE_FORM_ID_alter().
*/
function MYMODULE_form_article_node_form_alter(&$form, &$form_state, $form_id) {
$form['actions']['submit']['#submit'][] = '_MYMODULE_node_form_redirect';
}
/**
* Submit callback.
*/
function _MYMODULE_node_form_redirect($form, &$form_state) {
// Unset destination first.
unset($_GET['destination']);
unset($_REQUEST['edit']['destination']);
$form_state['redirect'] = 'FOO/BAR';
}
unset
ที่destination
ควรจะจัดการกรณีการแก้ไขการใช้งาน แต่พวกเขาไม่มีผลกับไซต์ Drupal 7 ของฉัน
เอกสารไม่ได้เป็นอย่างที่ชัดเจนเกี่ยวกับมัน แต่คุณควรแก้ไข$_GET['destination']
ตัวแปรไม่ได้หรือ$_REQUEST
$form_state['redirect']
ใน Drupal 7 คุณสามารถเปลี่ยนรูปแบบการแก้ไขโหนดเป็น 'แนบ' ฟังก์ชั่นการส่งของคุณเองซึ่งคุณสามารถเปลี่ยน form_state ของแบบฟอร์มยืนยันการลบโหนดเพื่อรวมพารามิเตอร์ 'ปลายทาง' ... ทำแบบนี้ในธีมที่กำหนดเอง i ' เราได้พัฒนาเป็นส่วนย่อยของธีมผู้ดูแลระบบ 'เจ็ด' ...
เอกสารประกอบสำหรับhook_form_FORM_ID_alter
คุณสามารถเพิ่ม hook นี้ไปยังเทมเพลต / ธีมไม่ใช่เฉพาะกับโมดูล
ดังนั้นในธีมของคุณtemplate.php
ให้เพิ่มแบบฟอร์มนี้แก้ไข hook:
function yourtheme_node_delete_form_submit( &$form, &$form_state ) {
$form_state[ 'redirect' ][ 1 ][ 'query' ][ 'destination' ] = "admin/content";
}
แล้ว voila ไม่เปลี่ยนเส้นทางไปยังหน้าแรกหลังจากลบโหนดแล้ว
ทางออกจากที่นี่http://api.drupal.org/api/drupal/developer%21topics%21forms_api_reference.html/7#comment-18139
<?php
function FORM_NAME_form_submit($form, &$form_state) {
$form_state['redirect'] = array(
// $path
'path/to/redirect/to',
// $options
array('query' => array('key' => 'value')),
// $http_response_code
302,
);
}
?>