[RÉSOLU] BOOTSTRAP et ScrollSpy avec l'Url Rewrite PluXML

NaBiSsNaBiSs Member
mai 2016 modifié dans Entraide et S.A.T
Bonjour à tous,

je viens de découvrir un comportement assez étrange, j'avais mis en place la solution Bootstrap pour tracker le positionnement du scroll sur la page.

Lien : scrollspy Bootstrap

Cela permet de mettre en surbrillance mon sous-menu en fonction de la position de l'utilisateur sur la page.

Tout fonctionnait jusqu'à ce que j'active l'Url Rewrite de PluXML.

Et depuis, mes scripts basés sur un lien avec une ancre ne fonctionnent plus.

Par exemple j'ai aussi un script "SmoothScroll" pour avoir un effet de transition entre deux ancres sur la page, lui non plus ne fonctionne plus.

Est-ce que quelqu'un a déjà identifié ce comportement ? Éventuellement, il y a t'il une solution pour qu'un lien soit ignoré de l'Url Rewrite ?

Réponses

  • Salut NaBiSs,

    Tu es sur quelle version de PluXml ? Ce comportement est-il toujours présent si tu désactives tous les plugins ? Ce comportement disparait-il lorsque tu désactives l'URL rewriting ?
    Sous quelle forme sont enregistrées les URL de tes ancres ? <a href="#home">home</a> ou <a href="http://monsite.com/index.php#home">home</a>;
  • NaBiSsNaBiSs Member
    Salut kowalsky, et merci pour ton intérêt sur la question.

    Alors pour répondre à tes questions :

    [list=*]
    [*]J'ai testé sur les deux versions 5.4 et 5.5, même comportement (ou presque)[/*]
    [*]Le comportement est toujours présent en désactivant tous les plugins[/*]
    [*]Quand je désactive l'Url Rewriting, tout refonctionne[/*]
    [*]Mes urls sont enregistrées dans une page statique, de cette façon : <a href="#home">home</a>[/*]
    [/list]

    En première analyse, je pense que l'Url Rewriting transforme les urls relatives en absolues, d'où probablement le fait que le javascript ne soit plus opérant puisqu'il doit détecter que les urls relatives sous forme d'ancres.

    Entre 5.4 et 5.5, j'ai mis "ou presque" car elles sont gérées différemment par PluXML, il y a dû y avoir une modification.
    5.4 => avec un lien de ce type <a href="#home">home</a>, il est transformé en http://racine/staticX/page#home
    5.5 => c'est transformé en http://racine/#home et le lien est mauvais. Ceci étant ça se corrige facilement avec <?php $plxShow->urlRewrite('indexe.php?staticX/') ?>
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour

    J'ai identifié des bugs dans la réécriture d'url. J'en parle ici:
    https://github.com/pluxml/PluXml/issues/174
    On est peut être dans ce cas de figure.
    ça serait intéressant que tu reportes les modifs proposées pour voir si ça bug toujours

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • StéphaneStéphane Member, Former PluXml Project Manager
    Si tu peux tester ça stp


    Dans le fichier core/lib/class.plx.utils.php, fonction rel2abs, remplacer:
    $patterns = array('#(href)=("|\')(mailto:|news:)#i', '#(href|src)=("|\')([a-z]+://)#i', '#(href|src)=("|\')(?:\./)?([^/])#i'); 
    
    par
    $patterns = array('#(href|src)=("|\')(\#|javascript|data:|mailto:|news:)#i', '#(href|src)=("|\')([a-z]+://)#i', '#(href|src)=("|\')(?:\./)?([^/])#i'); 
    

    Merci

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • NaBiSsNaBiSs Member
    Salut Stéphane et merci pour ton retour.

    Effectivement, ta proposition solutionne mes problèmes, tout mes scripts refonctionnent sans exception avec la réécriture d'URL activée.

    À ceux qui ont le même problème et qui liront, cette modification n'est valable que sur la v5.5 de PluXML.

    Comme d'habitude, merci :)
  • StéphaneStéphane Member, Former PluXml Project Manager
    @NaBiSs: merci pour la confirmation

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • PixelPixel Member
    mai 2016 modifié
    Bonjour, j'utilisais la balise "tel:" pour que les visiteurs mobile puisse cliquer directement le numéro de téléphone. Mais avec la 5.5 Pluxml rajouter .http://www.monsite.fr avant le tel:. Du coup j'ai rajouté "tel:" dans la ligne de code de Stéphane :
    [== PHP ==]
    $patterns = array('#(href|src)=("|\')(\#|javascript|data:|mailto:|tel:|news:)#i', '#(href|src)=("|\')([a-z]+://)#i', '#(href|src)=("|\')(?:\./)?([^/])#i');
    

    Du coup ça fonctionne.

    Merci pour le code.
  • Bonjour,

    J'ai ce même problème de réécriture des ancres sous PluXML 5.6. Ce n'est pas lié au module betterurl visiblement.
    L'ancre se voit précédée par l'URL de mon site, du coup je ne scroll pas mais je recharge une nouvelle page calée à la hauteur de l'ancre.
Connectez-vous ou Inscrivez-vous pour répondre.