it-swarm.asia

إعادة توجيه المستخدم بعد إضافة / تعديل العقدة

أريد إعادة توجيه المستخدمين إلى صفحة مخصصة ، بعد إنشاء عقدة أو تحريرها.

13
ousneo

يمكنك استخدام hook_form_alter لإضافة معالج إرسال مخصص حيث يمكنك تعيين مسار إعادة التوجيه.

راجع FAPI لمزيد من التفاصيل حول إعادة توجيه النموذج.

6
googletorp

يمكنك إنشاء قاعدة تعيد توجيه المستخدم إلى أي صفحة عند إنشاء نوع محتوى معين أو تحريره. عند إضافة قاعدة ، حدد "بعد إنشاء محتوى جديد" ، أضف أيضًا شرط "المحتوى له نوع". يمنحك قسم Do Do خيار إعادة توجيه المستخدم إلى أي صفحة تريدها.

لإعادة التوجيه بعد تعديل العقدة ، ما عليك سوى إنشاء قاعدة جديدة وتحديد "بعد تحديث المحتوى الموجود" كخيارك الأول.

4
user2014

عند القيام بذلك ، تأكد أيضًا من إلغاء تحديد وجهة موجودة محتملة والتي تتم إضافتها عادةً إلى عنوان 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';
}
2
leymannx

الوثائق ليست واضحة للغاية ، ولكن يجب عليك تعديل $_GET['destination'] متغير وليس $_REQUEST أو $form_state['redirect'].

1
Dmitry Vyal

في 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";
}

ثم فويلا. لم يعد يتم إعادة توجيهه إلى الصفحة الرئيسية بعد حذف العقدة.

1
kris

الحل من هنا 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,
    );
  }  
?>
0
Eugene Fidelin