Mengarahkan pengguna setelah simpul menambahkan / mengedit

13

Saya ingin mengarahkan pengguna ke halaman khusus, setelah mereka membuat simpul atau mengeditnya.

ousneo
sumber

Jawaban:

6

Anda dapat menggunakan hook_form_alteruntuk menambahkan penangan kirim kustom di mana Anda dapat mengatur jalur pengalihan.

Lihat FAPI untuk detail lebih lanjut tentang pengalihan formulir.

googletorp
sumber
1
Terima kasih atas jawaban anda ! Saya sudah membaca tentang FAPI tetapi masih memiliki pertanyaan untuk melanjutkan: Di mana saya harus meletakkan fungsi hook_form_alter?
ousneo
2
@ousneo Di drupal 7 Anda dapat meletakkannya di tema Anda atau di modul khusus yang Anda buat.
googletorp
1
silakan lihat jawaban @Dmitry Vyal
Capi Etheriel
1
Berikut adalah modul yang melakukan pengalihan setelah menyimpan. drupal.org/project/node_save_redirect
polyclick
1
Meskipun diterima, jawaban ini terlalu singkat untuk berguna. Sangatlah penting bagaimana Anda menambahkan handler pengiriman kustom Anda, dan jawaban ini tidak ada artinya. IMHO jawaban terbaik adalah dari @leymannx (tetapi lihat komentar tentang edit use case).
Radikal Gratis
4

Anda dapat membuat aturan yang mengarahkan pengguna ke halaman mana pun saat mereka membuat atau mengedit tipe konten tertentu. Ketika Anda menambahkan aturan pilih "Setelah Membuat Konten Baru" tambahkan juga kondisi "Konten Memiliki Jenis". Bagian You Do akan memberi Anda opsi untuk mengarahkan pengguna ke halaman apa pun yang Anda inginkan.

Untuk pengalihan setelah mengedit simpul, cukup buat aturan baru dan pilih "Setelah memperbarui Konten yang Ada" sebagai opsi pertama Anda.

kiamlaluno
sumber
Saya menggunakan Aturan untuk mengalihkan setelah membuat konten tertentu, tetapi pengguna tidak mendapat umpan balik sekarang. Saya ingin menunjukkan kepada pengguna bahwa "Konten Anda dibuat". Bagaimana saya bisa meningkatkan ini?
wallace740
1
Tambahkan tindakan lain setelah tindakan pengalihan ke "Tampilkan pesan yang dapat dikonfigurasi di situs" dan tambahkan pesan khusus Anda dari sana.
Saya menambahkan Aturan lain tetapi saya rasa saya melewatkan sesuatu dalam tema khusus saya karena pesan tersebut tidak ditampilkan di halaman depan saya. Saya menggunakan modul 'Pesan yang lebih baik' untuk menampilkan pesan semacam ini dalam sembulan! rule config
wallace740
Pengalaman saya adalah overlay melanggar aturan pengalihan, waspadalah.
Capi Etheriel
Dalam kasus saya ini, simpul menambahkan bentuk tertanam dalam panel. hook_form_alter tidak menangkapnya. Tetapi aturan bekerja dengan baik!
Druvision
2

Saat melakukan ini, pastikan juga untuk menghapus kemungkinan tujuan yang ada yang biasanya ditambahkan ke URL ketika Anda mengklik tombol edit untuk mengedit simpul yang ada.

Ganti articledi MYMODULE_form_article_node_form_alterdengan jenis konten Anda nama mesin.

/**
 * 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';
}
leymannx
sumber
Ini berfungsi untuk pengalihan setelah menambahkan node, tetapi tidak setelah mengeditnya. Saya mengerti bahwa panggilan untuk unsetyang destinationseharusnya untuk menangani kasus mengedit digunakan, tetapi mereka tidak memiliki efek pada saya situs Drupal 7.
Radikal Gratis
@FreeRadical - Anda benar. Saya memperbarui jawaban untuk menggunakan hook_form_BASE_FORM_ID_alter sebagai gantinya, yang menargetkan keduanya - tambahkan dan edit.
leymannx
@FreeRadical - Info tambahan: Perbedaan antara buat simpul baru dan edit dalam bentuk ubah .
leymannx
1

Dokumentasi tidak terlalu jelas tentang itu, tetapi Anda harus memodifikasi $_GET['destination']variabel, bukan $_REQUESTatau $form_state['redirect'].

Dmitry Vyal
sumber
1
Memodifikasi $ form_state ['redirect'] berfungsi dengan baik di Drupal 7 ...
Felix Eve
1

di Drupal 7 Anda dapat mengubah bentuk edit simpul untuk 'melampirkan' fungsi kirim Anda sendiri, di mana Anda dapat mengubah form_state dari formulir konfirmasi penghapusan simpul untuk menyertakan parameter 'tujuan' ... lakukan saja ini dalam tema khusus i ' telah berkembang sebagai subtitle dari tema admin 'tujuh' ...

Dokumentasi untuk hook_form_FORM_ID_alter

Anda dapat menambahkan kait ini ke templat / tema, bukan hanya ke modul.

jadi di tema Anda template.php, tambahkan formulir ini ubah pengait:

function yourtheme_node_delete_form_submit( &$form, &$form_state ) {
    $form_state[ 'redirect' ][ 1 ][ 'query' ][ 'destination' ] = "admin/content";
}

dan kemudian, voila. tidak lagi dialihkan ke beranda setelah sebuah simpul dihapus.

keris
sumber