नोड जोड़ने / संपादित करने के बाद पुनर्निर्देशित उपयोगकर्ता


13

मैं उपयोगकर्ताओं को एक कस्टम पृष्ठ पर पुनर्निर्देशित करना चाहता हूं, क्योंकि वे नोड बनाते हैं या इसे संपादित करते हैं।

जवाबों:


6

आप hook_form_alterकस्टम सबमिट हैंडलर जोड़ने के लिए उपयोग कर सकते हैं जहां आप रीडायरेक्शन पथ सेट कर सकते हैं।

प्रपत्र पुनर्निर्देशन के बारे में अधिक जानकारी के लिए FAPI देखें ।


1
आपके उत्तर के लिए धन्यवाद ! मैं FAPI के बारे में पढ़ा है, लेकिन अभी भी आगे जाने के लिए एक सवाल है: मुझे कहां जाना चाहिए hook_form_alter फ़ंक्शन?

2
@ousneo ड्रुपल 7 में आप इसे अपनी थीम में या आपके द्वारा बनाए गए कस्टम मॉड्यूल में डाल सकते हैं।
googletorp

1
कृपया @Dmitry Vyal उत्तर देखें
Capi Etheriel

1
यहां एक मॉड्यूल है जो बचत के बाद पुनर्निर्देशित करता है। drupal.org/project/node_save_redirect
polyclick

1
स्वीकार करते समय, यह उत्तर उपयोगी होने के लिए बहुत संक्षिप्त है। यह वास्तव में मायने रखता है कि आप अपने कस्टम सबमिट हैंडलर को कैसे जोड़ते हैं, और यह जवाब उस पर चुप है। सबसे अच्छा जवाब IMHO यह है कि @leymannx से (लेकिन संपादन उपयोग मामले के बारे में टिप्पणी द्वारा देखें)।
फ्री रेडिकल

4

आप एक नियम बना सकते हैं जो किसी विशिष्ट सामग्री प्रकार को बनाते या संपादित करते समय उपयोगकर्ता को किसी भी पृष्ठ पर पुनर्निर्देशित करता है। जब आप एक नियम जोड़ते हैं, तो "नई सामग्री बनाने के बाद" "सामग्री के प्रकार" की एक शर्त भी जोड़ें। यू डू सेक्शन आपको किसी भी पेज पर यूजर को आपके इच्छित पेज पर रीडायरेक्ट करने का विकल्प देगा।

एक नोड को संपादित करने के बाद पुनर्निर्देशित करने के लिए, बस एक नया नियम बनाएं और अपने पहले विकल्प के रूप में "मौजूदा सामग्री को अपडेट करने के बाद" चुनें।


मैंने एक विशिष्ट सामग्री बनाने के बाद नियमों का पुनर्निर्देशन किया, लेकिन उपयोगकर्ता को अब कोई प्रतिक्रिया नहीं मिली। मैं उपयोगकर्ता को दिखाना चाहता हूं कि "आपकी सामग्री बनाई गई है"। मैं इसे कैसे सुधार सकता हूं?
वालेस 740

1
"साइट पर एक कॉन्फ़िगर करने योग्य संदेश दिखाएं" पर पुनर्निर्देशित कार्रवाई के बाद एक और कार्रवाई जोड़ें और वहां से अपना कस्टम संदेश जोड़ें।

मैंने एक और नियम जोड़ा, लेकिन मुझे लगता है कि मुझे अपने कस्टम थीम में कुछ याद है क्योंकि संदेश मेरे सामने वाले पृष्ठ पर नहीं दिखाया गया है। मैं इस तरह के संदेशों को पॉपअप में दिखाने के लिए एक मॉड्यूल 'बेहतर संदेश' का उपयोग कर रहा हूं! नियम विन्यास
wallace740

मेरा अनुभव है कि ओवरले नियम को पुनर्निर्देशित करता है, सावधान रहना।
कापी ईथरल जूल

मेरे मामले में यह नोड ऐड फॉर्म एक पैनल को इनसाइड करने वाला था। hook_form_alter ने इसे नहीं पकड़ा। लेकिन नियमों ने बहुत काम किया!
Druvision

2

ऐसा करते समय, एक संभावित मौजूदा गंतव्य को भी सुनिश्चित करना सुनिश्चित करें जो कि सामान्य रूप से 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';
}

यह नोड जोड़ने के बाद रीडायरेक्ट करने के लिए काम करता है , लेकिन इसे संपादित करने के बाद नहीं। मैं समझता हूँ कि करने के लिए कॉल संपादित उपयोग के मामले को संभालने के लिए माना जाता है, लेकिन वे मेरी ड्रुपल 7 साइट पर कोई प्रभाव नहीं है। unsetdestination
फ्री रेडिकल

@ निशुल्क - आप सही हैं। मैंने इसके बजाय hook_form_BASE_FORM_ID_alter का उपयोग करने का उत्तर अपडेट किया , जो दोनों को लक्षित करता है - जोड़ और संपादित करें।
leymannx


1

प्रलेखन इस पर बहुत स्पष्ट नहीं है, लेकिन आपको $_GET['destination']चर को संशोधित करना चाहिए , $_REQUESTया नहीं $form_state['redirect']


1
$ Form_state को संशोधित करना ['पुनर्निर्देशित'] Drupal 7 में ठीक काम करता है ...
फेलिक्स ईव

1

Drupal 7 में आप नोड सबमिट फॉर्म को अपने स्वयं के सबमिट फ़ंक्शन को 'अटैच' करने के लिए बदल सकते हैं, जिसमें आप 'गंतव्य' पैरामीटर को शामिल करने के लिए नोड डिलीट कन्फर्मेशन फॉर्म के फॉर्म_स्टैट को बदल सकते हैं ... बस मैंने कस्टम थीम में ऐसा किया था ' ve 'सात' व्यवस्थापक विषय के उप-प्रकार के रूप में विकसित हो रहा है ...

Hook_form_FORM_ID_alter के लिए प्रलेखन

आप इस हुक को केवल मॉड्यूल के लिए नहीं, टेम्पलेट / थीम में जोड़ सकते हैं।

तो अपने विषय में template.php, इस फ़ॉर्म को जोड़ने के हुक जोड़ें:

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

और फिर, वोइला। नोड हटाए जाने के बाद अब मुखपृष्ठ पर पुनर्निर्देशित नहीं किया जाएगा।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.