Salve,
nel profilo utente del sito che sto costruendo ho inserito due campi custom:
- Soggetto di tipo select
- Ragione Sociale di tipo testo.
In sede di registrazione vorrei che Ragione Sociale venisse mostrato soltanto per un particolare valore di Soggetto.
Ho quindi applicato a Ragione Sociale uno stile display:none tramite css e fin qui tutto ok.
Adesso vorrei applicare l'attributo onchange="mostraDiv()" a Soggetto dove mostraDiv() è una piccola funzione js che cambia lo stile da none a block e viceversa.
A questo punto è necessario che io personalizzi il form user_register, perciò leggendo qua e là su internet ho trovato un articolo in cui si propongono due diversi approcci:
- realizzare un modulo custom
- fare l'override di una funzione del template, che in drupal 6 sembra abbastanza diverso da com'era prima.
Poiché nel mio caso si tratta di una piccolissima modifica che probabilmente non si ripeterà su altri campi, qual'è la soluzione migliore a vostro avviso?
E se decidessi di scrivere un nuovo modulo (quindi usare hook_form_alter) dovrei riscrivere l'intero form oppure solo i campi che intendo modificare?
Personalizzare campi form del profilo utente - best practices
Gio, 09/12/2010 - 16:31
#1
Personalizzare campi form del profilo utente - best practices
Altra opzione, che secondo me può funzionare: usi content_profile per i campi aggiuntivi e conditional_fields per la gestione della visualizzazione dei campi. Perché le due cose funziono insieme, va usata una patch: http://drupal.org/node/619290
Interessa sempre! :)
Grazie.
Questo è il mio semplicissimo modulo che con un'implementazione di hook_form_alter, in base al form_id modifica gli attributi di due custom fields.
Ho utilizzato anche una piccola funzione javascript richiamata con drupal_add_js che sull'onchange di un campo select (profilo) abilita e disabilita il successivo (ragsociale).
Per completezza: potresti allegare anche il file .js?
Grazie.
(così vedo se riesco a riportare la cosa sul modulo Contact, come spiegato qui:http://www.drupalitalia.org/node/13177 )
Ecco il contenuto del file ./js/customform.js:
function mostraDiv(value){
obj = document.getElementById('edit-profile-ragsociale');
if (value == 'Privato') {
obj.disabled='disabled';
}
else if (value == 'Azienda') {
obj.disabled='';
}
}
grazie uastasi