Je profite de ce post pour répondre à “Chadoc69” qui ma poser cette question sans laisser de mail valide pour répondre :
Comment avoir un site ASP .net avec plusieurs thèmes basés sur un thème de base, sans quand on change ce thème, avoir à mettre à jour les thèmes dérivés?
Il faut savoir que dans ce cadre il existe deux grandes familles de réponses :
- Celles qui ne marchent pas ou alors pas toujours.
- Celles qui fonctionnent mais qui ne sont peut être pas applicables à votre cas.
Histoire de tordre le coup à plusieurs vrais fausses idées commençons par les solutions du premier cas :
- L’appel des CSS de base via les CSS des thèmes dérivés – n’est pas une solution car la syntaxe n’est pas compatible avec tout les navigateur (CSS+script hasardeux non supportés par la norme).
- L’utilisation de répertoires virtuels dans les thèmes dérivés afin d’inclure le répertoire du thèmes de base – solution très manuelle car à chaque déploiement du site il faut toucher à la configuration du IIS, je ne l’ai jamais testé donc le fonctionnement n’est même pas garanti.
Les vrais solutions :
- Le thème global : cette solution sous-entend de pouvoir toucher au fichier de configuration machine afin d’indiquer un thème défini sur celle-ci en plus du site (hors du répertoire Thèmes) – ATTENTION ! ce thèmes s’applique à tout IIS, donc inutilisable sur un serveur mutualisé. Les inconvénients sont énormes :
- Droits administrateurs à négocier avec votre administrateur favori.
- Déploiement manuelles à faire en plus sur le serveur, un FTP ne suffit pas.
- Aucun site ne serra épargné par votre thème (ou alors il faut désactiver les thèmes dans les autres sites)
- Tout site de IIS serra obligé de chargé votre thème, ce qui est lourd quand un thèmes n’est pas utile.
- Dommage collatéraux imprévisible (impondérable de la mise en cascade de fichiers de configurations)
- L’appel des fichiers du thèmes de base dans la MasterPage de votre site –> ceci est la solution la plus viable. Il faut faut sortir votre thème de base du dossier des thèmes et utiliser les balises d’inclusion des CSS et autres fichiers manuellement dans la MasterPage. Ensuite on utilise les autres Thèmes normalement. Cette solution n’a que des avantages et n’aura pas d’effets de bords sur votre IIS et ses autres sites ;)