Tamplates differents en fonction du site (skins?)

Bonjour,

Comment faire pour arriver a avoir des templates differents en
fonction du site…En effet, comment faire pour que deux sites
different, affichent deux layouts different.

Typiquement, j’aimerais que toto.monsite.com affiche par exemple mes
layouts par defaut (ex: application.rhtml ) mais titi.monsite.com
affiche titi.application.rhtml si il existe (et idem pour les autres
vues)

Pas sur d’etre super clair…

A premi�re vue, un layout :choose_layout dans le code de ton
contr�leur, avec un m�thode priv�e choose_layout qui retourne le nom
du layout � utiliser, en fonction de ce que contient l’objet request,
devrait faire l’affaire.

Tiens :
http://api.rubyonrails.org/classes/ActionController/Layout/ClassMethods.html
Fais d�filer la page jusqu’� “Types of layout”.

Le 18/09/07, tomsoft[email protected] a �crit :

affiche titi.application.rhtml si il existe (et idem pour les autres
vues)

Pas sur d’etre super clair…


Guillaume DESRAT / Zifro AKA guillaumed
http://zlab.fr/

On 9/18/07, tomsoft [email protected] wrote:

layouts par defaut (ex: application.rhtml ) mais titi.monsite.com
affiche titi.application.rhtml si il existe (et idem pour les autres
vues)

Pas sur d’etre super clair…

Pour la gestion des vues des controllers c’est très simple, il suffit de
redéfinir ActionView::Base.render_file afin qu’au lieu de chercher
directement le chemin relatif tu rajoutes un test d’existence du fichier
dans un répertoire custom puis s’il n’y a pas de customisation execute
le
template normal. C’est très court tu peux même en faire un plugin.

Les limitations: il faut qu’un template existe dans app/views dans tous
les
cas car le test d’existence est dans une autre partie d’actionView.
Sinon tu
peux directement faire un rescue ActionView:TemplateMissing et chercher
le
template dans un autre répertoire dans ce cas, mais là on arrive à la
contrainte contraire, aucun template ne dois exister.

Pour ton cas particulier ce chemin supplémentaire pourrait être
paramétré Ã
l’aide d’une variable de class qui comme Rails est mono thread pourra
être
initialisé à la valeur du domain à l’aide d’un before filter.

C’est moins simple pour que ca marche avec les template d’actionMailer
mais
rien d’extremmement compliqué.

Renaud

Super! (et desolé pour le titre, tamplate ou lieu de template…)

Je crois que j’ai assez pour me debrouiller…Merci a tous les trois

Thomas :

Comment faire pour arriver a avoir des templates differents en
fonction du site…En effet, comment faire pour que deux sites
different, affichent deux layouts different.

Typiquement, j’aimerais que toto.monsite.com affiche par exemple mes
layouts par defaut (ex: application.rhtml ) mais titi.monsite.com
affiche titi.application.rhtml si il existe (et idem pour les autres
vues)

Tu récupères le sous-domaine dans ton contrôleur avec
request.subdomains.first
en fonction de cela tu détermines le gabarit (layout).

-- Jean-François.


Ruby ( http://www.rubyfrance.org ) on Rails ( http://www.railsfrance.org
)

Salut,

Pour la gestion de template tu as deja beaucoup d’info, par contre
peux-etre qu’un un plugin qui me sert en production pour gerer
plusieur site sur la meme appli peux t’etre utile :

http://box.svnrepository.com/svn/plugins/multi_site/

Le concept est simple et le resultat tres utile :wink:

Sebastien Grosjean - ZenCocoon