Jump to content

Modifier l’apparence d’un module avec le thème


Recommended Posts

Bonjour,

J'utilise Prestashop depuis peu, et je trouve l'outil vraiment pratique. Par contre, je ne comprends pas bien comment il fonctionne.

En fait, je souhaite utiliser le module Menu Haut Horizontal. Le problème c'est qu'il est gris, donc pas du tout adapté à mon thème. J'aimerais simplement lui donner l'apparence de mon thème. J'ai donc essayé de court-circuiter le fichier tpl depuis mon thème, mais ça ne fonctionne pas. (ou je ne sais pas comment faire plutôt)

J'aimerais savoir comment je peux modifier l'apparence (donc prendre le pas sur le css ou le tpl du module) depuis mon thème. Car je ne veux pas modifier les fichiers du module (ça serait une aberration dans toute logique de programmation et de maintenance d'un site)

Merci d'avance pour votre aide ;-)


PS: je ne sais pas si j'ai posté au bon endroit, mais c'est là où ça me paraissait le plus logique

Déplacé dans la section Intégration - Atch

Link to comment
Share on other sites

L'avantage de l'utilisation des templates est justement de séparer le traitement (php) de la structure (tpl) et de la présentation.
Ce n'est donc pas une aberration de modifier le tpl ou la css puisque cela ne change en rien la logique de traitement.
Tu peux évidemment garder une copie des fichiers originaux, au cas où.

L'aberration serait plutôt selon moi d'intégrer dans ton thème une dépendance à un module, en effet le jour où tu voudras remplacer le menu par un autre tu ne pourras pas simplement désactiver le menu actuel et activer un autre module, il faudra retoucher la CSS de ton thème. En appliquant tes modifs de présentation dans la CSS du module, ce problème ne se pose pas.

Link to comment
Share on other sites

Hum... Mais qui a parlé de dépendance ? Je ne veux pas que mon thème dépende d'un module, je veux que l'apparence du module change en fonction du thème installé. C'est justement là le concept de séparer design et traitement.

Que le design soit dans le dossier du module, oui, la version "par défaut" du module. Mais un thème doit pouvoir écraser l'apparence "par défaut" du module par la sienne. Sinon, c'est une aberration.

Essaie de mettre à jour 30 sites utilisant Prestashop si ça fonctionne de cette manière. Tu devras vérifier chaque module installé pour ne pas l'écraser. Donc au lieu d'une mise à jour de 1h avec une simple vérification, tu y passes 3 jours parce qu'il faut que tu vérifie manuellement tous les modules de chaque site. Super !

Enfin bref, tu ne réponds donc pas à ma question.

Quelqu'un d'autre peut-être ?

Link to comment
Share on other sites

Je comprends ta logique. Dans ce cas, comme tu le dis, le problème qui se pose est que la CSS du module "écrase" celle du thème, qui est chargée en premier dans le code. Pour éviter cela, je vois 2 solutions :


- soit tu édites ton header.tpl et tu déplaces

{$HOOK_HEADER}

quelques lignes plus haut, juste avant

{if isset($css_files)}

, ainsi la CSS du module sera chargée en premier


- soit tu peux utiliser la déclaration CSS "

!important

" dans la CSS de ton thème et ainsi ce que tu y déclareras ne pourra pas être écrasé. (voir ici pour plus d'informations)


Si tu as également besoin de toucher au fichier tpl, tu peux toujours modifier le fichier blocktopmenu.php du module pour qu'il ne charge non pas le fichier blocktopmenu.tpl situé dans le dossier du module, mais un autre fichier tpl que tu créeras dans le dossier de ton thème. Je n'ai pas le code de Prestashop sous les yeux, mais ça se passe dans la fonction hookTop, dans la dernière ligne.

En espérant avoir répondu à ta question.

Link to comment
Share on other sites

Merci pour la réponse.

Effectivement, monter le hook aurait été une solution si le module s'en servait... Mais le link css est directement déclaré dans le tpl du module en plein de le corp HTML (ce que je trouve hyper limite d'ailleurs).

Et puis les !important, ça empêcherait toute autre règle de priorité, je préfère donc éviter.

Mais ça me parait quand même étonnant qu'on ne puisse pas redéclarer un tpl d'un module dans le thème !

Enfin bon, si y a pas d'autres solutions, je vais modifier les fichiers du module...

Mais je reste ouvert à toute autre proposition si quelqu'un a une idée :-)

Link to comment
Share on other sites

Youhouuu!

Super ! Merci beaucoup !

Je me disais bien que c'était possible. Ca fonctionne parfaitement bien ! Mon tpl prend le pas sur celui du module. C'est vraiment génial.

Je fais juste une correction pour ceux qui arriveraient sur ce sujet : dans le répertoire du thème, il faut créer ce répertoire : modules/nom du module/fichier.tpl

Merci pour le coup de main jeckyl ;-)

Link to comment
Share on other sites

Youhouuu!

Super ! Merci beaucoup !

Je me disais bien que c'était possible. Ca fonctionne parfaitement bien ! Mon tpl prend le pas sur celui du module. C'est vraiment génial.

Je fais juste une correction pour ceux qui arriveraient sur ce sujet : dans le répertoire du thème, il faut créer ce répertoire : modules/nom du module/fichier.tpl

Merci pour le coup de main jeckyl ;-)


Penses à faire une recherche la prochaine fois car c'est déjà traité sur le forum vu que c'est là que je l'ai appris.
Link to comment
Share on other sites

Alors j'ai effectivement fait une recherche avant de poser la question. Sur google et sur le forum, je n'ai rien trouvé. L'étape suivante que j'avais prévu était d'aller voir le code source de presta... (mais comme je n'ai encore jamais trop regardé, je ne sais pas s'il est bien lisible)

Petit edit : j'ai effectivement trouvé la réponse dans le forum, mais les titres des sujets n'étaient pas très pertinent.. j'espère que celui-ci aidera les prochains en tout cas !

Link to comment
Share on other sites

  • 2 months later...
  • 1 year later...

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...