Jump to content

[Résolu] Relier des lien xml d'un menu, aux catégories de Prestashop, avec les langues qui vont bien


Recommended Posts

Bonjour à tous,

je viens de mettre en place un menu déroulant horizontal en xml
du style:

>
.PseudoFrame {display:none}
#menu1:hover #menu1Frame {display:block;}
#menu2:hover #menu2Frame {display:block;}
#menu3:hover #menu3Frame {display:block;}


</pre>
<ul>
menu1
contenu de la div avec photo


menu2
contenu de la div avec photo


menu3
contenu de la div avec photo


</ul>



J'ai rajouté ce code dans le header.tpl de mon theme et le menu s'affiche correctement, juste sous le bandeau

Je l'ai rajouté entre:

            <!-- Header -->



                   {$HOOK_TOP}



et

            <!-- Left -->

               {$HOOK_LEFT_COLUMN}


           <!-- Center -->

   {/if}



Pourriez-vous de dire comment relier les liens des sous-menus avec les catégories de PS ?
Faut-il intervenir sur header.php ?

Merci de vos bons conseils :)

Link to comment
Share on other sites

Alors là je sèche...
Je suis allé dans le fichier header.tpl, là où est écris mon menu à traduire

{l s='mon mot en anglais' mod='header_0bf616d5651c63123109203100d2250e'}



Du côté theme/prestashop/fr.php
J'ai rajouté une ligne

$_LANG['header_6879984dc30f7d7cc03b98ac91c05cde'] = 'Cette boutique nécessite JavaScript afin de fonctionner correctement. Merci de l\'activer dans votre navigateur.';
$_LANG['header_0bf616d5651c63123109203100d2250e'] = 'mon mot en français';



Enfin bref, du grand n'importe quoi
Le fichier en.php n'a pas une liste de mots en anglais, cela voudrai dire que les mots en anglais sont à écrire directement dans le fichier.tpl
Mais comment faire le lien entre

{l s='mon mot en anglais' mod='header_0bf616d5651c63123109203100d2250e'}


et
le fichier fr.php... mystère
Même en lisant les tutos du forum je n'ai pas compris
http://www.prestashop.com/forums/viewthread/24626/developpement_et_modules/tutoriel__gerer_les_langues_appels_et_restitutions

Link to comment
Share on other sites

En fait, vouloir traduire ton menu relève d'un module, car à ma connaissance il est nécessaire d'avoir un fichier par langue que tu souhaites traduire.
En prenant les choses dans l'ordre:
Tous les tpl sont en anglais, c'est la langue de référence, cela explique que le en.php ne contient aucune traduction.
Donc tu dois rédiger ton menu en anglais de cette manière:

{l s='Top sellers' mod='blockTONMENU'}

Accueil

Puis il va falloir construire ton module menu avec le MONMENU.tpl, MONMENU.PHP, l'icone logo.gif qui apparait dans le BO.

Charger ton module sur le serveur et procéder à son installation depuis le B.O.

Puis direction : Outils ---> Traduction: et c'est ici que vont être crées les fichiers langues, puisqu'en réglant sur "traduction de modules", celui ci sera détecté et automatiquement traduit en français si tu lui demandes de le traduire en français.

Mais si tu n'as pas l'intention d'écrire un module alors inutile d'envisager la traduction car j'ignore s'il possible de faire référence au fichier de traduction générale (le fichier fr.php qui se trouve dans le répertoire lang).

Par contre, je te conseille de charger un des modules gratuit de menu, et tu verras comment faire un tpl et qui sait en t'en inspirant rédiger ton propre module.

Link to comment
Share on other sites

J'y ai passé la matinée, mais je ne suis pas arrivé à quoi que se soit de probant
J'ai bien essayé de créer un module, mais je ne sais pas trop quoi mettre dedans...
J'ai bien lu un super tuto pourtant, mais je n'ai pas tilté...

Pour crée un module "monmenu" Il me faut:
monmenu.tpl (je ne sais pas quoi y mettre)
monmenu.php (je ne sais pas quoi y mettre)
logo.jpg (je l'ai recopier d'un autre module)
en.php (que j'ai recopier d'un autre module)
C'est 4 fichiers doivent être zippés et installés à partir du back office
Vue que mon menu xml est déjà dans header.tpl, je suppose qu'il faudrait que je l'enlève de là pour aller le copier dans monmenu.tpl, mais je ne sais pas quel code mettre autour...
Ensuite monmenu.php:
Sa raison d'être est de pouvoir installer mon block "monmenu" côté back office
Je n'ai pas besoin qu'il soit paramétrable donc le contenu devrait être minimaliste
Voilà, c'est peu :)

Link to comment
Share on other sites

Ce n'est pas très évident, c'est certain et de mon côté ce n'est pas facile de guider quelqu'un pour ce genre de démarche .
Je te conseilles de laisser ça de côté car tu dois avoir autres choses à faire comme par exemple t'occuper de tes produits etc... Si ton menu fonctionne tel que tu l'as conçu, c'est parfait. Tu auras l'occasion d'y revenir et cela en attendant t'a permis de toucher un peu aux modules.

Link to comment
Share on other sites

Oui, ton conseil de m'occuper de mes produit plutôt que de perdre mon temps à des détails est bon
Mais je n'aime pas m'éparpiller et commencer quelque chose sans le finir, après c'est le fouillis
Je préfère procéder étape par étape, c'est plus claire pour moi

Pourrais-tu malgré tout me donner des conseils qui me permettraient d'y arriver ?

Link to comment
Share on other sites

Bon, cela marche :)
Je cherchai dans le compliqué...
En fait, il n'y avait rien à faire de spécial, j'ai chercher des heures et des heures pour ça! la classe hein?
Mais bon on est tous habituer...

Je rappel que j'ai mis mon menu dans header.tpl situé dans themes/prestashop/
Dans le thème prestashop, il y a un tiroir "lang" qui répertorie toutes les traductions des modules du thème

En voici un exemple choisi et modifier pour mettre en valeur l'existence des langues des différents modules:
Extrais de fr.php

$_LANG['contact-form_c7892ebbb139886662c6f2fc8c450710'] = 'Objet';
$_LANG['contact-form_7bc873cba11f035df692c3549366c722'] = '-- Choisir --';
$_LANG['contact-form_8b5dd64ab8d0b8158906796b53a200e2'] = 'Votre adresse e-mail';
.....
$_LANG['discount_d95cf4ab2cbf1dfb63f066b50558b07d'] = 'Mon compte';
$_LANG['discount_70b77fea994d1bda0a46cb5f9c9275f3'] = 'Vos bons de réductions';
.....
$_LANG['errors_6357d3551190ec7e79371a8570121d3a'] = 'Il y a';
$_LANG['errors_4ce81305b7edb043d0a7a5c75cab17d0'] = 'Il y a';
..... ah c'est là que j'ai mis mon menu .....
$_LANG['header_6879984dc30f7d7cc03b98ac91c05cde'] = 'Cette boutique nécessite JavaScript afin de fonctionner correctement. Merci de l\'activer dans votre navigateur.';
$_LANG['header_4cbfe67340292113c37189ac59871696'] = 'mon mot traduit en fr';
$_LANG['header_0f6cdb621b452ac6fb994d88e674e49f'] = 'mon mot traduit en fr';
......
$_LANG['history_d95cf4ab2cbf1dfb63f066b50558b07d'] = 'Mon compte';
$_LANG['history_782c8b38bce4f2f6975ca7f33ac8189b'] = 'Historique de vos commandes';



Dans mon fichier header.tpl j'utilise donc la méthode 'l' de la classe abstraite header.tpl (comme dise les pro) :)
Je met tout mes texte en anglais: ici le mot "basket"

{l s='basket'}



Il est à noté que je n'ai pas eu besoin de mod="mon module" puisqu'il n'y a pas de module ? ou alors header est considéré comme un module ?
{l s='mon mot à traduire' mod='mon module'} n'était donc pas de mise

Une fois mes liens de menu tous écrient en anglais, je suis allé dans le back office Outils/traduction/drapeau français
Je suis descendu jusqu'à Header, et j'ai pu traduire tout en français
C'est tout de même génial ce PS !!!
Encore merci à toi Jacobis pour m'avoir montrer le chemin :)

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