Düğüm eklendikten / düzenlendikten sonra kullanıcıyı yönlendir


13

Kullanıcıları bir düğüm oluşturduktan veya düzenledikten sonra özel bir sayfaya yönlendirmek istiyorum.

Yanıtlar:


6

Yeniden hook_form_alteryönlendirme yolunu ayarlayabileceğiniz özel bir gönderme işleyicisi eklemek için kullanabilirsiniz .

Form yeniden yönlendirmesi hakkında daha fazla bilgi için FAPI'ye bakın .


1
Cevabınız için teşekkürler ! FAPI hakkında okudum ama hala devam etmek için bir sorum var: Nerede hook_form_alter işlevi koymak gerekir?
ousneo

2
@ousneo drupal 7'de temanıza veya oluşturduğunuz özel bir modüle koyabilirsiniz.
googletorp

1
lütfen bakınız @Dmitry Vyal cevap
Capi Etheriel

1
İşte kaydettikten sonra yönlendirme yapan bir modül. drupal.org/project/node_save_redirect
polyclick

1
Kabul edilirse de, bu cevap faydalı olamayacak kadar kısa. Özel gönderme işleyicinizi nasıl eklediğiniz gerçekten önemlidir ve bu yanıt bu konuda sessizdir. En iyi cevap IMHO @leymannx (ancak düzenleme kullanım durumu hakkındaki yorumlara bakın).
Serbest Radikal

4

Belirli bir içerik türü oluştururken veya düzenlerken kullanıcıyı herhangi bir sayfaya yönlendiren bir kural oluşturabilirsiniz. Bir kural eklediğinizde "Yeni İçerik Oluşturduktan Sonra" yı seçin, "İçerik Türü Var" koşulunu da ekleyin. Yapılacaklar bölümü size bir kullanıcıyı istediğiniz herhangi bir sayfaya yönlendirme seçeneği sunar.

Bir düğümü düzenledikten sonra yeniden yönlendirme yapmak için yeni bir kural oluşturmanız ve ilk seçeneğiniz olarak "Mevcut İçeriği güncelledikten sonra" seçeneğini belirtmeniz yeterlidir.


Belirli bir içerik oluşturduktan sonra yönlendirmek için Kurallar'ı kullandım, ancak kullanıcı şimdi geri bildirim almıyor. Kullanıcıya "İçeriğiniz oluşturulduğunu" göstermek istiyorum. Bunu nasıl geliştirebilirim?
wallace740

1
Yönlendirme işleminden sonra "Sitede yapılandırılabilir bir ileti göster" seçeneğine başka bir işlem ekleyin ve özel iletinizi oradan ekleyin.

Başka bir Kural ekledim, ancak mesajın ön sayfamda gösterilmediği için özel temamdaki bir şeyi özlediğimi düşünüyorum. Bu tür mesajları bir pop-up pencerede göstermek için 'Daha iyi mesajlar' modülünü kullanıyorum! kural yapılandırma
wallace740 27:12

Deneyimlerim, bindirme kurallarını yeniden yönlendiren kurallara dikkat edin, dikkat edin.
Capi Etheriel

Benim durumumda bu düğüm ekleme formu bir panel içerisine gömüldü. hook_form_alter yakalamadı. Ancak kurallar harika çalıştı!
Druvision

2

Bunu yaparken, varolan bir düğümü düzenlemek için düzenle düğmesini tıkladığınızda normalde URL'ye eklenen olası bir hedefin ayarını da kaldırdığınızdan emin olun.

Değiştir articleiçinde MYMODULE_form_article_node_form_alteriçerik türünün makine adı ile.

/**
 * 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';
}

Bu , bir düğüm ekledikten sonra yönlendirmeler için çalışır , ancak düzenledikten sonra çalışmaz. Ben yapılan çağrılar anlıyoruz düzenlemek kullanımı olaya el gerekiyordu, ama onlar benim Drupal 7 sitesinde hiçbir etkisi yoktur. unsetdestination
Serbest Radikal

@FreeRadical - Haklısın. Cevabı , hem ekle hem de düzenle'yi hedefleyen hook_form_BASE_FORM_ID_alter kullanmak için güncelledim .
leymannx

@FreeRadical - Ek bilgi: Form alter'da yeni oluşturma ve düzenleme düğümü arasındaki fark .
leymannx

1

Belgeler üzerinde çok net değil, ancak $_GET['destination']değişkeni değiştirmelisiniz , $_REQUESTya da değiştirmemelisiniz $form_state['redirect'].


1
$ Form_state ['redirect'] 'i değiştirmek Drupal 7'de iyi çalışıyor ...
Felix Eve

1

Drupal 7'de, düğüm düzenleme formunu kendi gönderme işlevinizi 'iliştirmek' için değiştirebilirsiniz, burada 'hedef' parametresini eklemek için düğüm silme onay formunun form_state'ini değiştirebilirsiniz ... sadece bunu özel bir tema i 'de yaptım 'yedi' yönetici temasının alt teması olarak gelişiyor ...

Hook_form_FORM_ID_alter belgeleri

Bu kancayı yalnızca modüllere değil, bir şablona / temaya ekleyebilirsiniz.

yani temanızda template.php, bu formu değiştir kanca ekleyin:

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

ve sonra, voila. bir düğüm silindikten sonra artık ana sayfaya yönlendirilmiyor.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.