web-dev-qa-db-fra.com

Comment appliquer plusieurs skins à un site via le sélecteur "modèles" à l'aide du changement de feuille de style?

Je commence juste à me mouiller les patrons et à poser quelques questions.

Premièrement, idéalement, mes modèles utilisent la même structure que mon thème principal. Cependant, ils utilisent simplement une feuille de style et des images différentes.

Actuellement, je permets de changer l'apparence du site en changeant de feuille de style.

J'ai simplement un dossier sous mon thème principal appelé "styles", puis un dossier unique pour chacun de mes "skins". À l'intérieur de chaque dossier de peau se trouve un fichier style.css avec des images.

La façon dont cela fonctionne est que j'ai placé du code dans le fichier header.php de mon thème principal, de sorte qu'il lise la valeur de l'enveloppe actuellement active dans la base de données des options, puis charge la feuille de style correspondant à cette apparence ...

Dans l'exemple ci-dessus, la peau active est "skin1", donc je charge toujours ...

"... mytheme/styles /". get_option ('active_skin'). "style.css"

Cela fonctionne extrêmement bien et me permet de placer un simple widget de sélecteur de skin (un menu déroulant avec affichage miniature) dans mon fichier function.php pour permettre à l'utilisateur admin de basculer facilement entre plusieurs skins qui changent complètement l'apparence du site. .

La beauté de cette approche réside dans le fait que le thème sélectionné et le balisage sous-jacent restent inchangés. Je suis donc en mesure de créer une variété de styles à l'aide d'un balisage prévisible. Un peu comme CSS zen garden. Même balisage, des milliers de dessins. Tout ce qui change est la feuille de style et les images.

Cependant, le seul inconvénient de cette approche (du moins avec WordPress) est que l’apparence sélectionnée s’applique à l’ensemble du site. Je ne parviens pas à appliquer une peau à la page d'accueil et une peau à une page spéciale pouvant nécessiter une apparence et un toucher complètement différents.

S'il existait un moyen d'ajouter du code à chaque dossier de skin afin qu'il apparaisse dans le menu déroulant "modèles" de l'éditeur de page, je serais capable de faire exactement ce que je veux.

Est-ce possible?

1
Scott B

Bien sûr que c'est possible. La solution rapide consiste à ajouter un champ personnalisé au postmeta (dans la zone "Champs personnalisés" de la page Éditer un article/Modifier une page) et à obtenir la valeur dans votre thème à l'aide de get_post_meta () .

La méthode légèrement moins rapide consiste à ajouter un wrapper à cette valeur de champ personnalisé en plaçant votre sélecteur de thème dans une méta-boîte post .

1
gabrielk

Je cherchais simplement une autre question sur la découverte automatique du modèle de page, et il s'avère que WordPress interdit explicitement les fichiers de modèle dans les sous-répertoires . Vous devrez procéder autrement, par exemple en utilisant des champs personnalisés comme suggéré par gabrielk, ou en fournissant une interface utilisateur aux mêmes champs méta à l'aide de méta-boîtes d'administration personnalisées .

1
Annika Backstrom