J'ai une instance de Drupal sur example.org. Qui a un thème X installé et activé. Désormais, pendant une période limitée, un événement est censé se dérouler sur le site pour lequel une section spéciale a été "découpée". Toutes les choses liées à cet événement iront à example.org/event2011.
Je souhaite afficher un thème différent chaque fois qu'une page de cette section est affichée (par exemple, http://example.org/event2011/about , http://example.org/event2011/node/123 ). Comment je fais ça?
J'ai parcouru de nombreux modules, mais aucun ne prend en charge Drupal 7. De préférence, j'aimerais que ce soit fait à l'aide de modules et je ne veux rien changer moi-même au niveau du code.
Réponses:
Étant donné que le changement concerne une période limitée et que la mise en œuvre d'un tel code n'est pas difficile, je suggérerais de mettre en œuvre un module personnalisé qui modifie le thème utilisé pour des pages spécifiques.
Il suffit de mettre
hook_custom_theme()
en œuvre comme suit:Si vous devez modifier le thème uniquement pour http://example.com/event2011 , mais pas pour http://example.com/event2011/node/123 , le code doit être remplacé par
En ce qui concerne l'utilisation des rappels de thème dans la définition d'un rappel de menu, la documentation indique:
la source
Une solution personnalisée comme l’autre commentaire suggère est probablement la meilleure solution, mais si vous voulez vraiment utiliser un module, votre meilleur choix est ThemeKey . Depuis le 23/05/11, il a une version stable.
la source
Sinon, vous pouvez utiliser la nouvelle
theme callback
option du système de menus,hook_menu_alter()
comme indiqué ci-dessous. ps Checkout hook_menu () pour plus de détails sur latheme callback
De plus, il y a aussi un exemple d'utilisation du plus traditionnel
hook_custom_theme()
Tiré de: http://drupal.org/node/224333#custom_theme
la source
Vous pouvez simplement utiliser Context et utiliser le thème pour être appliqué lorsque le chemin est / event2011 / vous pouvez simplement définir le chemin en condition de cotext et changer le thème dans l'action du contenu. C'était que vous pouvez très facilement basculer entre les thèmes sur un site basé sur l'URL. Même travaille pour les mobiles;)
la source
Utiliser ThemeKey est simple et c’est le module le plus populaire et le plus populaire à ce jour (avec prise en charge de 8.x) pour les règles de commutation de thème qui permettent la sélection automatique d’un thème en fonction du chemin actuel, des termes de taxonomie, de la langue, du type de nœud, etc. beaucoup d'autres propriétés. Il peut également être facilement étendu pour prendre en charge des propriétés supplémentaires exposées par d'autres modules. Outre les fonctionnalités standard, ThemeKey étend automatiquement les fonctionnalités de nombreux modules contrib et est étendu par des modules.
Utilisation (7.x)
Après avoir activé le module, allez à
admin/config/user-interface/themekey
. Il existe de nombreuses options pour changer de thème, mais cela vous intéressera probablementpath:node_alias
. Réglez donc la valeur comme vous le souhaitez, comme vous le dites / my_url, puis sélectionnez le thème que vous souhaitez activer à cette adresse. Vous pouvez également utiliser des caractères génériques tels queweb/*
ou/^web/.*
.Vérifier: Comment charger un thème pour un chemin
Utilisation avancée
ThemeKey 7.x contient un module optionnel appelé ThemeKey Example pour montrer aux développeurs comment étendre ThemeKey.
Aide (7.x)
Découvrez le didacticiel vidéo de Mustardseed (7.x).
Plus d'aide sur ce sujet peut être trouvée à
/admin/help/themekey
.Vérifiez également les autres questions SE liées à themekey .
Alternativement, il existe également Switchtheme (7.x) qui ajoute un bloc pour permettre aux utilisateurs de basculer entre les thèmes activés.
la source
Lorsque vous utilisez des alias d'URL ou le module Pathauto , tenez compte des subtilités et des différences lors de l'utilisation de composants du chemin Drupal actuel.
Il y a des situations où vous pouvez ne pas vouloir utiliser arg () . En fait, la documentation de l'API Drupal suggère en fait d'éviter l'utilisation de cette fonction dans la mesure du possible, car le code résultant est difficile à lire.
Prenons l'exemple suivant, proposé par kiamlaluno :
Dans Drupal 7, si un nœud a un alias de event2011 , using
arg(0)
retournera ennode
tant que premier composant URL, par opposition à l'alias.Au lieu de cela, si vous avez besoin de travailler avec un alias , il y a plusieurs façons d'obtenir l'URL actuelle dans Drupal , y compris
menu_get_object()
,current_path()
,request_path()
et d' autres.Voici un exemple retravaillé qui utilise un alias comme déclencheur pour changer de thème:
la source
Comment changer de thème en fonction du rôle de l'utilisateur:
Créez un module personnalisé et copiez-collez les éléments suivants:
Vous devez remplacer:
mymodule
=> avec votre nom de modulemon rôle spécial => avec le nom du rôle que vos utilisateurs devront avoir pour qu'ils puissent voir un thème différent.
mytheme
=> avec le nom du thème que vous souhaitez basculer versla source
Vous pouvez utiliser le module Thème de page pour obtenir exactement cela
la source
Vous pouvez utiliser le module Thème de page pour obtenir exactement cela: Le module Thème de page est un module simple et facile à utiliser qui permet d’utiliser des thèmes différents de ceux du site par défaut sur des pages spécifiques.
Caractéristiques :
Attribuez un thème à une seule page ou à une liste de pages. (Définir une page en tant que chemin Drupal) Permet d'utiliser le caractère '*' comme caractère générique dans les chemins Drupal. Permet d'organiser des thèmes. (Si plusieurs pages sont définies, le premier thème de la liste sera utilisé) Autoriser pour activer / désactiver un thème. Drupal novice amical.
de même que vous pouvez utiliser: Sections qui ont la plupart des mêmes fonctionnalités que le thème de la page, mais ajoute une sélection basée sur le rôle et une zone "extrait php" pour choisir le thème.
Toutefois, si vous souhaitez utiliser des thèmes différents de ceux définis par défaut par le site pour la création, la modification et l'affichage de pages, vous pouvez utiliser le thème de contenu, qui permet d'utiliser des thèmes différents de ceux définis par défaut pour la création, la modification et la visualisation de contenu.
la source