أريد إعادة توجيه المستخدمين إلى صفحة مخصصة ، بعد إنشاء عقدة أو تحريرها.
يمكنك استخدام hook_form_alter
لإضافة معالج إرسال مخصص حيث يمكنك تعيين مسار إعادة التوجيه.
راجع FAPI لمزيد من التفاصيل حول إعادة توجيه النموذج.
يمكنك إنشاء قاعدة تعيد توجيه المستخدم إلى أي صفحة عند إنشاء نوع محتوى معين أو تحريره. عند إضافة قاعدة ، حدد "بعد إنشاء محتوى جديد" ، أضف أيضًا شرط "المحتوى له نوع". يمنحك قسم Do Do خيار إعادة توجيه المستخدم إلى أي صفحة تريدها.
لإعادة التوجيه بعد تعديل العقدة ، ما عليك سوى إنشاء قاعدة جديدة وتحديد "بعد تحديث المحتوى الموجود" كخيارك الأول.
عند القيام بذلك ، تأكد أيضًا من إلغاء تحديد وجهة موجودة محتملة والتي تتم إضافتها عادةً إلى عنوان 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';
}
الوثائق ليست واضحة للغاية ، ولكن يجب عليك تعديل $_GET['destination']
متغير وليس $_REQUEST
أو $form_state['redirect']
.
في Drupal 7 يمكنك تغيير نموذج تحرير العقدة إلى "إرفاق" وظيفة الإرسال الخاصة بك ، حيث يمكنك تغيير form_state لنموذج تأكيد حذف العقدة لتضمين معلمة "الوجهة" ... لقد قمت بذلك للتو في موضوع مخصص قمت بتطويره كموضوع فرعي لموضوع المشرف "السبعة" ...
وثائق hook_form_FORM_ID_alter
يمكنك إضافة هذا الخطاف إلى القالب/الموضوع ، وليس فقط إلى الوحدات النمطية.
لذا في template.php
في السمة الخاصة بك ، أضف هذا النموذج لتغيير الخطاف:
function yourtheme_node_delete_form_submit( &$form, &$form_state ) {
$form_state[ 'redirect' ][ 1 ][ 'query' ][ 'destination' ] = "admin/content";
}
ثم فويلا. لم يعد يتم إعادة توجيهه إلى الصفحة الرئيسية بعد حذف العقدة.
الحل من هنا 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,
);
}
?>