Jump to content

[Résolu] Modification blockcategories avec jquery, lien non cliquable


Recommended Posts

Version : 1.4.1
Module modifié : Blockcategories

Bonjour, je viens faire appel à vous car je rencontre un problème assez bizarre pour ma part.

En fait je souhaite intégrer un menu jquery à la place du menu blockcategories actuel. Jusque là aucun soucis, pour tester rapidement, j'ai juste ajouter mon code html dans le "blockcategories.tpl", mon script marche sans problème, le seul problème rencontré est la redirection des liens. En fait lorsque je clique sur un lien rien ne se passe, alors que si je clic droit dessus puis j'ouvre dans un nouvel onglet, la cible s'ouvre bien...

Je vous avouerai que je ne comprends vraiment pas du tout d'où peut provenir le problème, ou alors je suis passé à côté d'une base de PS :/

si une âme charitable aurait la gentilesse m'éclairer...

Merci bien.

Link to comment
Share on other sites

Personne pour m'aider ? Pour ceux que ca intéresserait le code insérer à la place de l'ancien dans le blockcategories.tpl

       [removed][removed]
       [removed][removed]
       [removed]
           $(document).ready(function(){
               $('#menu').menuvertical();
           });
        [removed]

<!-- Block categories module -->

{l s='Navigation' mod='blockcategories'}




Accueil
Categorie 2

sous menu 1
sous menu 2
sous menu 3


Contact





Link to comment
Share on other sites

Suis-je dans la mauvaise catégorie ? Je suis toujours bloqué, je suis presque sûr qu'il s'agit d'un léger problème qu'une personne aguerrie sur prestashop pourrait résoudre en 2 mins mais me concernant cela me dépasse totalement...

J'ai remarqué que lorsque j'enlève le javascript du .tpl, les liens remarchent, le problème et que lorsque j'insère mes balises script dans le header.tpl de mon thème le script ne marche pas... Il y a t-il une manip de spéciale à effectuer lorsque l'on souhaite intégrer du js sur prestashop ?

Pour info voici les fichiers et code que je dois appeler :



           $(document).ready(function(){
               $('#menu').menuvertical();
           });

Link to comment
Share on other sites

Bonjour,

Normal, dés lors que l'on met du code avec des {} dans des tpl, Smarty interprete cela comme une des ses variables... Mais ne connaissant pas celle ci, il plante...

pour éviter cela, mettez {literal}votre script{/literal} comme cela smarty n’interprétera pas cela comme du code à lui.

V++

Atch

Link to comment
Share on other sites

Merci de votre réponse, je ne l'avez pas précisé mais j'avais déjà essayé le {literal}{/literal}, cela ne change rien au problème, j'ai essayé de placer les balises {literal} à des endroits différentes par rapport au script sans succès... Le problème vient bien cette partie :

     {literal}
     $(document).ready(function(){
               $('#menu').menuvertical();
           });
{/literal}



Dès que je l'enlève les liens marchent correctement au détriment du fonctionnement du script.

Le problème persiste donc ...

Link to comment
Share on other sites

peut etre un conflit de jquery... Vous appelez un jquery alors que Prestashop en appel un autre....

puis votre script menu, faut peut etre le place dans la balise <head>, ché pas, testez tout, c'est comme ça que l'on y arrive.

V++

Atch

Link to comment
Share on other sites

Merci de votre réponse, j'ai déjà essayé tout ce que vous avez dit sans succès :

- j'ai enlevé l'appel de mon "jquery-1.4.2.min.js", le script semble fonctionner avec la version native de prestashop donc il ne devrait pas il y avoir de conflit.

- lorsque je place le script ci-dessous dans le <head> celui-ci ne marche plus

     {literal}
     $(document).ready(function(){
               $('#menu').menuvertical();
           });
{/literal}



- n'y a t il pas moyen de remplacer les {literal} par autre chose ? Car ceux ci n'ont aucun impact sur le code après plusieurs tests...

Link to comment
Share on other sites

Re, et encore désolé mais une personne aurait-elle l'amabilité de m'indiquer comment insérer ce code dans le tpl avec un moyen similaire au {literal} ou alors me renvoyer une explication sur l'insertion de js dans le header...

Encore Merci.

Link to comment
Share on other sites

  Quote
Re, et encore désolé mais une personne aurait-elle l'amabilité de m'indiquer comment insérer ce code dans le tpl avec un moyen similaire au {literal} ou alors me renvoyer une explication sur l'insertion de js dans le header...

Encore Merci.


Pour moi il faut commencer par analyser le code généré. J'ai l'impression que jusque là on cherche trop loin , alors que si on regarde juste :
sous menu 1




On voit de suite qu'il s'agit d'un lien relatif , et que d'emblée , si on l'exécute à partir d'une page cms avec rewrite activé , ça ne marchera pas

On devrait obtenir :

                    sous menu 1



Si le code javascript se base sur le href pour construire un lien il y a de grandes chances qu'il se plante.

Après c'est déja un point à corriger pas forcémént la solution à tous tes maux , mais Andes , comme tu m'as PM pour que je jette un oeil à ce post , je le découvre seulement et je fais un premier jet ...

Link to comment
Share on other sites

Merci de cette réponse :)

Malheureusement, j'ai déjà essayé avec des liens absolues... De toutes les choses que j'ai tenté, la seule fois où les liens marchent c'est lorsque j'enlève cette partie du code :

       $(document).ready(function()  { $('#menu').menuvertical(); }  );    



J'ai essayé avec les {literal} comme me l'a conseillé Atch mais sans succès, j'ai cru comprendre qu'avec smarty 3, ils n'avaient plus aucun effet... Merci encore de prendre du temps pour m'aider !

Link to comment
Share on other sites

les {literal} marchent toujours en smarty 3 , mais sont dépréciés , c'est à dire qu'il est conseillé d'agir autrement....mais ça je viens encore de détailler comment dans un autre post, une énième fois alors je la refais pas ... mais facile à trouver ;)

Je pense que tu gagnerais à nous fournir un lien , même en privé s'il le faut, ainsi que le module incriminé , si véritablement tu souhaites qu'on y apporte une solution.
Que ce soit Atch , moi , ou un autre , sans la matière , sans les outils , on peut pas bosser

Tu m'as contacté en PM pour que je jettes un oeil ici , ce que j'ai fais , mais à l'aveugle , tu comprends, on fait pas grand chose, à part des tas de lignes pour rien . Quand la solution est peut être toute simple (c'est souvent le cas, et on en parlait justement ce matin avec atch)....

Link to comment
Share on other sites

Re, je t'ai envoyé un mp il y a quelques jours et je viens de m'aperçevoir que celui-ci à du passer au travers, je ne l'ai pas dans mon dossier sent ^^, je pouvais toujours attendre :) je me permets de retranscrire ici le contenu approximativement :

ci-dessous la boutique avec le script (les liens ne pointent donc pas directement) :
http://www.prestaweb.net/creation/garmiche/

le script en question :

    
$(document).ready(function()  { $('#menu').menuvertical(); }  );    



ici, sans le script, les liens marchent bien :
http://www.prestaweb.net/creation/garmiche2/

voici le code complet de la partie en question :


       $(document).ready(function()  { $('#menu').menuvertical(); }  );    


<!-- Block categories module -->

{l s='Navigation' mod='blockcategories'}


Accueil
Categorie 1

Fournitures exemple
sous menu 2
sous menu 3



Categorie 2

sous menu 1
sous menu 2
sous menu 3


Contact



<!-- /Block categories module -->



Voila, en espérant vous avoir suffit assez d'éléments. Je vous remercie !

Link to comment
Share on other sites

Salut,
Désolé oui je ne peux pas répondre à tous les PM qu'on m'envoie.

J'ai regardé ton script et tes pages.
Le script se charge d'intercepter le click sur un lien , et de charger le contenu cible dans un élément de la page (div par ex) qui a l'id id="contenu" .

Je ne sais pas très bien ce que tu veux faire, mais il me semble que tu dois modifier cette partie de code
(ça ne passera sans doute pas entièrement ici sur le forum) :

               //Si il y a une page à charger
               if(nom){
                   $('#contenu').load(nom, function(response, status, xhr) {
                       if (status == "error") {
                           var msg = "Aucune page à charger";
                           //$("#contenu").html(msg + xhr.status + " " + xhr.statusText);

                           //On va regarder si une div existe
                           var nomdiv = nom.substring(0,nom.lastIndexOf('.'));
                           //alert(nomdiv);
                           $("#contenu div").each(function(i){
                               $(this).slideUp('slow');
                           });

                           $('#contenu div#'+nomdiv).slideDown('slow');
                       }
                   });
               }



à la place tu devrais plutot avoir un truc du genre :

                //Si il y a une page à charger
               if(nom){
                        location.href=($(this).attr('href'));
                   });
               }



Edit :
J'ai aussi vu passer un truc dans ton code (note bien le / devant category dans la deuxième section de code):

Fournitures exemple



c'est un lien relatif. Si c'est du presta , dans les pages cms ou les sous catégories le lien marchera pas. On devrait avoir :

Fournitures exemple

Link to comment
Share on other sites

Grand merci Broceliande !
Je me permets juste de modifier le bout de code ci-dessus en enlevant " }); " ce qui donne :

//Si il y a une page à charger
               if(nom){
                        location.href=($(this).attr('href'));
                          }



Encore Merci, tu me sors d'un sacré trou parce que le js et moi, c'était perdu d'avance !
(sinon juste pour info comment fais-tu pour essayer du code js en live sur un site distant, extension FF ? Encore 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...
tracking pixel