Aggiungere un bottone 'Salva e continua' nella pagina di edit per i contenuti
Stato documento: Alfa
In fondo alla pagina ci sono tre bottoni 'Salva' 'Antiprima' ed 'Elimina'. Quando clicciamo su 'Salva' viene si, salvato il contenuto modificato, ma poi ci troviamo sulla pagina di elenco contenuti, o la pagina del contenuto stesso. Quando clicciamo su 'Antiprima' vediamo (più o meno) come verrà visualizzato la pagina. Ma se abbiamo altri browser aperto (per controllare la visualizzazione) non viene viste le modifiche in antiprima - e se salviamo il contenuto dobbiamo poi cliccare il link per tornare al'editor.
La pagina di edit dei Prodotti in Ubercart però ha una quarta bottone: 'Salva e continua', il che salva il contenuto ma ripresenta la pagina di edit. E' se vogliamo aggiungere questa funzionalità per tutti i tipi di contenuto (o se non interessa installare Ubercart)? Ormai anche se non siamo maestri di PHP abbiamo imparato a creare un modulo custom per conto nostro, quindi possiamo aggiungere questo quarto bottone proprio in quel modulo.
Il hook per modificare i form ha già del codice dentro, e dobbiamo solo aggiungere in quel funzione altro codice per il bottone (nuovo codice in grassetto):
function custom_form_alter(&$form, $form_state, $form_id) {
switch ($form_id) {
case 'system_modules': // form della lista dei moduli
// Bloccare la disattivazione
$form['disabled_modules']['#value']['custom'] = true;
$form['status']['#disabled_modules'][] = 'custom';
// Non permette throttling
if (isset($form['throttle']) && isset($form['throttle']['#process'])) {
$form['throttle']['#process'][] = 'custom_throttle_checkbox_disable';
}
return;
case 'page_node_form':
$form['buttons']['save_continue'] = array(
'#type' => 'submit',
'#value' => t('Save and continue'),
'#weight' => 7,
'#submit' => array('node_form_submit', 'custom_save_continue_submit'),
);
return;
}
}
Ed in più, aggingere il codice per gestire il botton (in fondo al file):
/**
* Dopo aver salvato il node, fai un redirect alla pagina edit.
*/
function custom_save_continue_submit($form, &$form_state) {
$form_state['redirect'] = 'node/'. $form_state['nid'] .'/edit';
}
Ricorda la regola #1! Cambia
custom
per il nome del tuo modulo!
Semplice, no?
Argomenti:
- Versione stampabile
- Accedi o registrati per inserire commenti.