Jump to content

Questions de débutant pour créer un thème


Recommended Posts

Bonsoir à tous!

Je me penche sur la création d'un thème pour Presta et j'ai bien fouillé sur le forum afin de me débrouiller déjà un peu seul. Je bloque mtn sur quelques points.

1. Le lien entre les fichiers header.tpl et footer.tpl

Je ne comprends pas comment se fait le lien entre les deux fichiers. Venant de wordpress, je m'attendais à voir un fichier index qui appelle les différentes parties, comme le header et le footer par ex. Je ne trouve pas de telle structure, est-ce qu'il y en a une?

2. Les hook, des points d'accroche ok, mais...

2.1 Je ne parviens pas à bien saisir la définition d'un hook, même après avoir bien cherché. Ce sont en quelque sortes des emplacements dans la page qui nous permettent de placer les modules? Un hook top page pourrait il en théorie être placé dans un div qui se trouverait dans le footer ou pas?

2.2 Ne peut on pas insérer un module dans un div sans passer par le concept de hook?

2.3 Peut on créer un hook? Si oui comment et à quoi cela peut il servir? A l'utiliser pour placer un module fait maison?

3. Placement des modules avec un exemple concret, le panier dans l'entête

Pour reprendre ma question 2.2, comment dois-je faire si je veux placer mon panier tout en haut du site au centre, et non pas dans une colonne? Pourquoi est-ce que certains modules comme le panier sont ils limités à certains hooks? Peut on modifier ces restrictions?

Merci infiniment d'avance pour votre aide! :)

Link to comment
Share on other sites

Je vais me répondre déjà un peu tout seul :)

Alors j'ai testé une magouille... j'ai placé le hook left column dans le div de l'entête (où se trouve le logo du site). Et en effet ça marche, je peux glisser mes modules dedans. Le problème est que mtn je n'ai plus de colonne gauche... De plus je ne comprend pas comment aligner les modules plutôt qu'ils ne s'affichent en colonne, est-ce dans le CSS? En fait un nouveau div se crée pour chaque module et on régle son emplacement?

Ne peut on pas créer un nouveau hook, par ex hook top 2, et permettre au module panier par ex de s'y placer? Cela serait génial, on pourrait vraiment être flexible! On pourrait définir une grille de base et sa ligne graphique, puis y placer les modules via le back office.

Je m'excuse si mes questions doivent paraître vraiment bêtes pour certains, mais je ne suis absolument pas dévelopeur. Je suis graphiste et j'essaye donc de conceptiser au max, parsk là je suis un peu perdu... :)

Link to comment
Share on other sites

Salut,

1. lien entre les fichiers
En faite, Prestashop utilise le moteur de template Smarty qui utilise de fichier .tpl ce qui permet de séparer le contenu du code php (pour ma part je trouve ça plus propre ^^)
Pour en savoir plus sur le principe de tpl -> http://phpcodeur.net/articles/php/templates par contre c'est la lib dans l'article c'est phplib, le moteur de template de phpBB (entre autre)

2. Les Hook doivent être vu comme de boîte (de mon pointe vue)

2.1 Oui et non le Hook Top peut être utiliser dans le footer cependant le Hook est défini dans le fichier header.php

2.2 Effectivement, je crois qu'on ne peut pas passer outre les hook pour afficher les modules

2.3 Il suffit créer un fichier et d'y placer des requêtes (voir l'exemple ci-joint) ou lorsque tu crées un module, il suffit de placer la requête là.
Par exemple ça permet de mieux placer tes modules, par exemple le HookTop regroupe plusieurs modules et pour y faire de modification c'est plutôt compliquer car tout est réglé au millimètre prés ^^

3. Alors pour ton exemple concret il faut modifier le module panier voilà la marche à suivre:
- Utilise l'installeur que j'ai fourni pour créer un HookExemple
- Une fois créer, il faut que tu que tu édites le fichier header.php
Recherche ceci

    'HOOK_TOP' => Module::hookExec('top'),


Ajoute apres

    'HOOK_EXEMPLE' => Module::hookExec('HookExemple'),


- Après il faut éditer le fichier header.tpl, tu ajoutes ceci ou tu veux ! avec les css qui va avec ^^

                
                   {$HOOK_EXEMPLE}


- Après, il faut éditer le module "blockcart" plus exactement le fichier blockcart.php
Recherche ce code:

    function hookLeftColumn($params)
   {
       return $this->hookRightColumn($params);
   }


Après ajoute ceci:

    function hookHookExemple($params)
   {
       return $this->hookRightColumn($params);
   }


- Une fois fait, il te suffit d'accrocher le module au HookTopExemple

Voilà fini voir sceen par contre j'ai pas mis de css du coup ça s'affiche en "tas"

installeur.zip

9873_8BHRO6vC10MsmIS2dNYj_t

Link to comment
Share on other sites

Merci infiniment Natsu de prendre du temps pour m'expliquer. En plus, tes infos sont vraiment claires!

Je vais faire l'exemple ce soir, lors d'une énimène "PrestaNuit" :)

Par contre je bloque sur un seul point, je ne comprends pas ce que je dois faire avec ton installateur pour créer un hook. Où dois-je le lancer?

J'aimerais aussi clarifier la façon dont le contenu d'un module s'affiche dans un hook lorsqu'on inspecte sa page avec firebug:
- Un div avec ID contient le hook. Je peux donc définir son CSS.
- Ce div contient un div principal pour chaque module, lui aussi avec ID, comme par ex

que je peux aussi modifier indépendamment dans le CSS
- Ma question est donc, d'où viennent ces div id="nom du module">? Ils sont définis dans un fichier du module?

La structure de Presta (au niveau design) me parait bcp plus flexible que ce que tout le monde dit si on peut commencer à créer des hook et y insérer n'importe quel module! Je me réjouis d'essayer! :)
Link to comment
Share on other sites

Salut Fab,

Chaque module (répertoire modules de Presta) contient au moins 4 fichiers :
-lemodule.PHP
-lemodule.TPL
-en.PHP (langue)
-logo.gif

Si tu souhaites modifier le style d'un des block modules tu trouveras ton bonheur dans le fichier .tpl

V++

Atch

Link to comment
Share on other sites

Natsu, au risque de me répéter en compliments, tes explications sont géniales! J'ai tout suivi, et utilisé ton installateur (qui crée le nouveau hook dans la base de donnée si j'ai bien compris) et ça marche parfaitement! J'ai pu placé mon caddie dans le nouveau hook sans problème.

Cette discussion devrait être épinglée, parce que vraiment c'est génial pour les gens qui sont plus orientés graphisme. Presta devient totalement flexible.

Merci encore, et à bientôt!

Link to comment
Share on other sites

  • 1 month later...
  • 1 month later...
  • 4 months later...
  • 7 months later...

Bonjour Natsu ou Atch

Je me permets de Faire uper ce Thread
car j'aimerais une information complémentaire
Actuellement sur un thème à offrir pour la communauté
j'aimerais placer le module le MGC Carousel , je voudrais l'adapté, pas, dans la page d'accueil
comme il le propose par défaut.
Mais plus dans Top of page (voir screen )
J'ai donc suivi ton thread mais malheureusement je n'ai aucun résultat visuel

Travaillant en local
voici screens + le module MGC Carousel ou j'ai modifié le fichier homecarousel.php
le code

function hookHookExemple($params)



Pourrais tu me dire si m'a démarche fut bonne ou je me suis carrément planté
Qu'aurais pu oublié ?
et si possible m'expliquer ce qui serais à changer pour obtenir le résultat désiré (voir screen résultat voulu )
Cordialement à vous 2.

homecarousel.zip

32294_geJH5Ekcr0sfOAhV6wur_t

Link to comment
Share on other sites

  • 5 weeks later...

Merci pour ce tuto qui m'a permis de créer un nouveau hook entre le top et les colonnes pour pouvoir mettre mes scènes.
le problème est que j'ai que dalle à la sortie!!!

donc j'ai bien crée le nouveau hook

if (!Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'hook` (`id_hook`, `name`, `title`, `description`, `position`) VALUES ("", "topsecond", "Top_second", "second top under the first one", "1")'))



puis modifié le fichier header.php

'HOOK_SECONDTOP' => Module::hookExec('topsecond'),



enfin le header.tpl de mon template

               {$HOOK_SECONDTOP}



donc, voilà, maintenant, je peux accrocher n'importe quel module dans ce nouveau hook, rien n'apparait et dans le code source de la page la balise

reste tritement vide.

est-ce que quelqu'un aurait une idée du problème??

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