Template e sottodomini
Avete mai avuto la necessità di creare dei sottodomini ad un dominio di secondo livello ed applicare ad ognuno di essi un template o creato dall’utente o scelto da un set di template predefiniti nel sistema? Ecco alcuni suggerimenti e linee guida per realizzare un sistema di questo tipo.
Supponendo di:
- installare la gemma theme_generator con il comando gem install theme_generator.
- installare il plugin theme_support con il comando ./script/plugin install http://mattmccray.com/svn/rails/plugins/theme_support
- creare il modello Site con un campo subdomain e uno theme_name, il primo per inserire il nome del sottodominio e il secondo per specificare il nome del template da associare al sito
- creare il controller site_controller per gestire i siti dei sottodomini
Inserire all’interno dell’application_controller il seguente codice:
1 .. end
Vediamo in dettaglio il codice indicato sopra:
- alla linea num. 3 introduciamo una variabile subdomain_theme in cui memorizziamo il nome del template da utilizzare nel sito.
- alla linea num. 5 settiamo la variabile subdomain_theme prima di ogni azione chiamando la funzione set_theme.
- alla linea num. 9 cerchiamo all’interno della tabella sites il record corrispondente al sottodominio che si sta visitando e dal cui record si estrae il nome del template.
A questo punto, supponendo di aver creato il controllore site_controller possiamo inserire la seguente linea di codice per richiamare il template associato al sito:
1 2 3 layout 'default' 4 5 theme :get_subdomain_theme 6 7 8 subdomain_theme 9 end .. .. end
A questo punto vi trovate un’applicazione web che serve più sottodomini, con la possibilità di specificare un template diverso o in comune per ogni sito.

