Jump to content

Module dynamique selon le thème


Recommended Posts

Bonjour,

Pour certaines occasions, je souhaiterais changer de thème, mais suivant le design du thème, les modules installés ne sont pas forcément bien adaptés.

La solution serait d’identifier le thème et de rendre actif ou non le module concerné.

Par exemple pour le module blockcategories :

If ($theme==”theme1”) {
return $this->display(__FILE__, 'blockcategories.tpl');
}

La question est, comment identifier le thème affiché par le client ?

Avec mes remerciements.

Link to comment
Share on other sites

Puisque personne ne semble motivé pour m’aider, alors je me suis encore aidé tout seul.

Et pour ceux que ça intéresse,
Si vous avez besoin de rendre actif un module pour un thème, et inactif pour un autre thème, voici la solution :

Exemple pour l’affichage du module blockcategories.
Remplacer dans le fichier « blockcategories.php » la ligne

return $this->display(__FILE__, 'blockcategories.tpl');

Par

if (preg_match("/\biNomdevotretheme\b/i", _PS_THEME_DIR_)) {
return $this->display(__FILE__, 'blockcategories.tpl');
}

Explication :
Si dans l’url du thème, on trouve le nom du thème ou le module blockcategories doit être affiché, on active le module.
Bien sûr, remplacer dans le code Nomdevotretheme par le nom de votre thème.

Voila !

Link to comment
Share on other sites

Bonjour,

Il y avait beaucoup plus simple.

Chaque template de module peut-être géré indépendamment du module principal, mais aussi d'un thème à l'autre.
La construction peut se faire comme suit :

/themes/theme_1/modules/lemodule/lemodule.tpl -> avec un contenu dédié au thème 1
/themes/theme_2/modules/lemodule/lemodule.tpl -> avec un contenu dédié au thème 2

Ceci prendra le pas sur les tpl situés dans :
/modules/lemodule/lemodule.tpl

Bonne continuation

Link to comment
Share on other sites

Bonjour,

Je vous remercie beaucoup pour votre proposition qui est certainement mieux adaptée.
J’aimerais volontiers la mettre en en fonction mais je n’ai pas trouvé où placer cette syntaxe.

Puis-je abuser de vos connaissances pour me donner la solution.

Encore merci.

Link to comment
Share on other sites

Il n'y a aucune syntaxe particulière. Le noyau de PrestaShop prévoit déjà cette possibilité de personnaliser soit même ses propres fichiers tpl des modules.

La personnalisation d'un thème et de modules, doit se comprendre comme une possibilité détachée du noyau et des modules natifs ou non.

Ainsi, cela facilite les mises à jour du noyau et les évolutions de votre thème personnel.

L'exemple simple d'une personnalisation idéale d'un thème qui utilise certains modules pour faire fonctionner votre boutique serai de ne pas personnaliser les fichier tpl dans /modules/lemodule/les-fichiers-tpl-du-module.tpl, mais de faire une copie de chaque tpl des modules souhaités et utilisés dans la boutique, et de les placer dans /themes/[votre_theme]/modules/lemodule/les-fichiers-tpl-du-module.tpl.

Cette possibilité permettra au noyau PrestaShop d'interpréter en priorité les tpl placés dans votre thème. S'ils ne sont pas présents, il traitera ensuite ceux par défaut dans le module en lui même (soit /modules/lemodule/*).

Ce qui veut dire que l'ensemble de vos personnalisations des templates se rend totalement détachable du noyau.

Vous pouvez donc créer autant de thème que vous souhaitez avec pour chacun des thèmes des personnalisations respectives des tpl.

Il ne vous reste plus qu'à créer votre fonction de changement de thème, sans vous soucier du changement de tpl. La référence principale du dossier de thème à la volée suffira.

Bonne continuation

Link to comment
Share on other sites

Merci pour vos explications, et autant pour moi.
J’avais bien remarqué le dossier module dans certains templates.
En conclusion les modules des dossiers template sont traités en priorité.

Merci beaucoup.

Link to comment
Share on other sites

  • 7 months later...
Il n'y a aucune syntaxe particulière. Le noyau de PrestaShop prévoit déjà cette possibilité de personnaliser soit même ses propres fichiers tpl des modules.

La personnalisation d'un thème et de modules, doit se comprendre comme une possibilité détachée du noyau et des modules natifs ou non.

Ainsi, cela facilite les mises à jour du noyau et les évolutions de votre thème personnel.

L'exemple simple d'une personnalisation idéale d'un thème qui utilise certains modules pour faire fonctionner votre boutique serai de ne pas personnaliser les fichier tpl dans /modules/lemodule/les-fichiers-tpl-du-module.tpl, mais de faire une copie de chaque tpl des modules souhaités et utilisés dans la boutique, et de les placer dans /themes/[votre_theme]/modules/lemodule/les-fichiers-tpl-du-module.tpl.

Cette possibilité permettra au noyau PrestaShop d'interpréter en priorité les tpl placés dans votre thème. S'ils ne sont pas présents, il traitera ensuite ceux par défaut dans le module en lui même (soit /modules/lemodule/*).

Ce qui veut dire que l'ensemble de vos personnalisations des templates se rend totalement détachable du noyau.

Vous pouvez donc créer autant de thème que vous souhaitez avec pour chacun des thèmes des personnalisations respectives des tpl.

Il ne vous reste plus qu'à créer votre fonction de changement de thème, sans vous soucier du changement de tpl. La référence principale du dossier de thème à la volée suffira.

Bonne continuation


Merci,
Et si on ne veut pas que le core aille chercher les modules dans theme par default mais qu'il traite uniquement les modules trouvés dans themesperso/modules ?
Comment faire ?
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...