site JoomlaDay > javascript 'onclick' pour ajouter/retirer des paramètres à l'url

Réduire
X
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • site JoomlaDay > javascript 'onclick' pour ajouter/retirer des paramètres à l'url

    Bonjour à tous,

    Je suis en train de faire des essais de filtres sur le site du JoomlaDay (je sais, je suis dans les temps pour #jd20fr )

    Pour être concret, voyez
    https://www.joomladay.fr/articlesanywhere

    On peut filtrer les articles sur base des Custom Fields (même avec plusieurs custom fields et même avec plusieurs valeurs pour un custom field). Exemple :
    https://www.joomladay.fr/articlesany...-am-3&room=200

    Là j'ai fait des boutons simples avec des hyperliens codés "en dur".
    L'étape ultime consiste maintenant à ajouter un peu de javascript pour que les liens soient "dynamiques".

    Exemple : si on clique sur "session 1", ça devrait
    - ajouter ?session=slot-am-1 à l'url s'il n'y a pas encore de ?session=
    - ajouter slot-am-1 à ?session= s'il y a déjà d'autres sessions
    - retirer ?session=slot-am-1 de l'url s'il y est déjà et que c'est la seule session
    - retirer slot-am-1 de l'url s'il y a d'autres sessions

    (idéalement, pas de jquery mais juste du vanilla javascript pour être universel et ne pas avoir de dépendance. Et le plus simple / léger possible )
    Dernière édition par woluweb à 22/05/2019, 09h25
    Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

    Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez régulièrement ? Alors adhérer à l'AFUJ : https://www.joomla.fr/association/adherer

    Présentations : slides.woluweb.be | Coordonnées complètes : www.woluweb.be

  • #2
    Sans doute un début de piste : https://usefulangle.com/post/81/java...url-parameters

    Mais j'ai besoin de votre aide pour mettre tout ça en musique pour le cas concret
    Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

    Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez régulièrement ? Alors adhérer à l'AFUJ : https://www.joomla.fr/association/adherer

    Présentations : slides.woluweb.be | Coordonnées complètes : www.woluweb.be

    Commentaire


    • #3
      hey,
      Un tout petit coup de pouce:

      Get URL Parameters with JavaScript
      https://codepen.io/SitePoint/pen/rQGWpP
      Eddy.vh and woluweb like this.
      Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

      Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer

      Commentaire


      • #4
        En fait, je réexprime le besoin : je l'avais formulé de manière "technique", mais en fait le vrai besoin correspond à ceci :

        - quand on clique sur un bouton, ça ajoute un paramètre à l'url pour filtrer les articles
        - du coup, quand on clique sur un autre bouton, filtre sur autre chose. Autrement dit, on réinitialise le filtre

        Bref, l'idée serait de pouvoir dire que si on clique sur plusieurs boutons, l'url "cumule" les paramètres plutôt que de les effacer à chaque fois...

        Du coup, on pourrait cliquer p.ex. cliquer les boutons "salle A" et "salle B" pour voir les conférences dans les deux salles...
        Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

        Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez régulièrement ? Alors adhérer à l'AFUJ : https://www.joomla.fr/association/adherer

        Présentations : slides.woluweb.be | Coordonnées complètes : www.woluweb.be

        Commentaire


        • #5
          Tu n'as pas un exemple à montrer, même approximatif ?
          Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

          Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer

          Commentaire


          • #6
            Salut ghazal
            Ben oui, l'exemple est sur https://www.joomladay.fr/articlesanywhere
            Tu peux tout combiner dans l'url.
            L'exemple le plus simple est celui mis dans le bouton "session 1 & 3", qui déclenche (hardcodé ici) https://www.joomladay.fr/articlesany...am-1,slot-am-3
            Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

            Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez régulièrement ? Alors adhérer à l'AFUJ : https://www.joomla.fr/association/adherer

            Présentations : slides.woluweb.be | Coordonnées complètes : www.woluweb.be

            Commentaire


            • #7
              Tu reprends cette demo, non ?
              http://demo.webularlab.nl/index.php/agenda
              Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

              Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer

              Commentaire


              • #8
                Oui, la page sur joomladay.fr est une version améliorée de demo.webularlab.nl, que je mentionne en bas
                (améliorée pcq je généralise à différents champs... et que il y a du php pour ajouter la classe en fonction de la présence ou non des paramètres dans l'url)
                Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

                Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez régulièrement ? Alors adhérer à l'AFUJ : https://www.joomla.fr/association/adherer

                Présentations : slides.woluweb.be | Coordonnées complètes : www.woluweb.be

                Commentaire


                • #9
                  Pour être précis, voici même le code qui permet d'ajouter la classe si le paramètre est dans l'url :

                  Code:
                  {source}
                  <?php $session = explode(',', JFactory::getApplication()->input->getString('session'));
                  // echo (in_array('slot-am-1', $session) ? 'yes' : 'no');
                  // print_r ($session);
                  echo '<a class="btn btn-default" href="/articlesanywhere">Tous</a> ';
                  echo '<a class="btn btn-default' . (in_array('slot-am-1', $session) ? ' btn-primary' : '') . '" href="/articlesanywhere?session=slot-am-1">Session 1</a> ';
                  echo '<a class="btn btn-default' . (in_array('slot-am-2', $session) ? ' btn-primary' : '') . '" href="/articlesanywhere?session=slot-am-2">Session 2</a> ';
                  echo '<a class="btn btn-default' . (in_array('slot-am-3', $session) ? ' btn-primary' : '') . '" href="/articlesanywhere?session=slot-am-3">Session 3</a> ';
                  
                  echo '<a class="btn btn-default' . '" href="/articlesanywhere?session=slot-am-1,slot-am-3">Sessions 1 & 3</a> ';
                  
                  echo '<hr />'; $room= explode(',', JFactory::getApplication()->input->getString('room')); // print_r ($room);
                  echo '<h4>Filter by Custom Field of type Articles Field (Room)</h4>';
                  echo '<a class="btn btn-default" href="/articlesanywhere">Toutes</a> ';
                  echo '<a class="btn btn-default' . (in_array(35, $room) ? ' btn-primary' : '') . '" href="/articlesanywhere?room=35">Amphithéatre PlanetHoster</a> ';
                  
                  echo '<a class="btn btn-default' . (in_array(199, $room) ? ' btn-primary' : '') . '" href="/articlesanywhere?room=199">Salle Infomaniak</a> ';
                  
                  echo '<a class="btn btn-default' . (in_array(200, $room) ? ' btn-primary' : '') . '" href="/articlesanywhere?room=200">Salle atelier</a> ';
                  
                  echo '<hr />'; $jour= explode(',', JFactory::getApplication()->input->getString('jour'));
                  // print_r ($jour);
                  
                  echo '<h4>Filter by Tag</h4>';
                  echo '<a class="btn btn-default" href="/articlesanywhere">Tous</a> ';
                  echo '<a class="btn btn-default' . (in_array('vendredi', $jour) ? ' btn-primary' : '') . '" href="/articlesanywhere?jour=vendredi">Vendredi</a> ';
                  
                  echo '<a class="btn btn-default' . (in_array('samedi', $jour) ? ' btn-primary' : '') . '" href="/articlesanywhere?jour=samedi">Samedi</a> ';
                  
                  echo '<a class="btn btn-default' . (in_array('test', $jour) ? ' btn-primary' : '') . '" href="/articlesanywhere?jour=test">Test</a> ';
                  echo '<hr />'; $date= explode(',', JFactory::getApplication()->input->getString('date'));
                  echo '<h4>Filter by Creation Date (possible to filter on yyyy-mm-dd or yyyy-mm or yyyy for example. But using >= in the filter is not foreseen</h4>';
                  echo '<a class="btn btn-default" href="/articlesanywhere">Tous</a> ';
                  echo '<a class="btn btn-default' . (in_array('2019-02-04', $date) ? ' btn-primary' : '') . '" href="/articlesanywhere?date=2019-02-04">2019-02-04</a> ';
                  
                  echo '<a class="btn btn-default' . (in_array('2019-02', $date) ? ' btn-primary' : '') . '" href="/articlesanywhere?date=2019-02">2019-02</a> ';
                  
                  echo '<hr />'; $page= explode(',', JFactory::getApplication()->input->getString('page')); // print_r ($page);
                  echo '<h4>Example of text based on Pagination</h4>';
                  echo '<p>' . 'Is this page 2 or not : ' . (in_array('2', $page) ? 'yes' : 'no') . '</p>'; ?>
                  {/source}


                  Code:
                  {articles category="30" slot="input:session:*" salle="input:room:*" tag="input:jour:*" created="input:date:*" order="slot,salle" per_page="10"}
                  
                  [link][title][/link]
                  [slot]
                  [salle]
                  
                  {/articles}
                  Dernière édition par ghazal à 25/05/2019, 09h51
                  Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

                  Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez régulièrement ? Alors adhérer à l'AFUJ : https://www.joomla.fr/association/adherer

                  Présentations : slides.woluweb.be | Coordonnées complètes : www.woluweb.be

                  Commentaire


                  • #10
                    Je me suis permis de faire du rangement, lol.
                    Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

                    Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer

                    Commentaire


                    • #11
                      Hello Marc.

                      Je pense que ce serait plus facile avec 3 champs "select list" à choix multiple : rooms, sessions et tags (et du coup tu t'affranchirais d'un js perso) :

                      https://docs.joomla.org/J3.x:Adding_.../List_Field/fr

                      Et au niveau ergonomie, moi j'aime bien ce champ, plutôt que de multiplier les boutons.

                      De plus je rajouterai aussi un bouton "valider" pour éviter de recharger la page à chaque choix tant que l'on a pas fini la sélection de l'ensemble des filtres.

                      Rajout :
                      Oups, à la réflexion, c'est un peu + compliqué à mettre en œuvre c'est sûr.
                      Il faut créer un layout de filtres, et l'appeler dans le code.
                      Si la piste te semble intéressante, je veux bien regarder à l'occasion.
                      Dernière édition par roland_d_alsace à 25/05/2019, 10h14
                      A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
                      Rejoignez le Joomla Users Groupe Alsace...
                      roland_d_alsace va-t-il devenir roland_du_grand_est ?

                      Commentaire


                      • #12
                        Sinon pour rester dans le fil de ton idée des boutons colorées :

                        il faudrait au clic d'un bouton appeler une fonction js qui attribue la classe qui colorie le bouton, puis qui scrute tous les boutons ayant cette classe de couleur pour calculer l'URL, puis seulement appel de l'url ainsi calculée.

                        En JQuery cela semble pas trop compliqué...mais tu semble être dans le mouvement anti-JQuery actuel
                        Dernière édition par roland_d_alsace à 25/05/2019, 10h44
                        A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
                        Rejoignez le Joomla Users Groupe Alsace...
                        roland_d_alsace va-t-il devenir roland_du_grand_est ?

                        Commentaire


                        • #13
                          Merci ghazal pour l'ajout des balises "code" (si c'est bien ça que tu as changé)

                          Salut roland_d_alsace
                          Oh, si c'est en jquery je prends aussi hein ! j'suis pas difficile

                          Mais le but est d'avoir la possibilité de sélections multiples : exemple :
                          salle1+salle2 (dans pareil cas, un dropdown ne me paraît pas adéquat)
                          vendredi+salle1

                          D'où l'idée a priori de garder des boutons (par ailleurs ça fait aussi moins de clics que d'aller dans un dropdown pour choisir une valeur. Ca dépend du cas de figure bien sûr : s'il y avait 100 valeurs parmi lesquelles choisir SANS sélection multiple, alors bien sûr un dropdown serait mieux)
                          Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

                          Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez régulièrement ? Alors adhérer à l'AFUJ : https://www.joomla.fr/association/adherer

                          Présentations : slides.woluweb.be | Coordonnées complètes : www.woluweb.be

                          Commentaire


                          • #14
                            Juste une Petite question ?
                            C.est une volonté d.utiliser articles anywhere ?

                            Pourquoi ne pas utiliser un module de filtres sur des custom fields ?
                            A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
                            Rejoignez le Joomla Users Groupe Alsace...
                            roland_d_alsace va-t-il devenir roland_du_grand_est ?

                            Commentaire


                            • #15
                              Envoyé par roland_d_alsace Voir le message
                              Juste une Petite question ?
                              C.est une volonté d.utiliser articles anywhere ?

                              Pourquoi ne pas utiliser un module de filtres sur des custom fields ?
                              euh, quel "module de filtres" ?
                              (et le but est de pouvoir faire des sélections multiples, pas de réinitialiser chaque filtre quand on clique sur un autre)
                              Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

                              Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez régulièrement ? Alors adhérer à l'AFUJ : https://www.joomla.fr/association/adherer

                              Présentations : slides.woluweb.be | Coordonnées complètes : www.woluweb.be

                              Commentaire

                              Annonce

                              Réduire
                              1 sur 2 < >

                              C'est [Réglé] et on n'en parle plus ?

                              A quoi ça sert ?
                              La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

                              Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

                              Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
                              Comment ajouter la mention [Réglé] à votre discussion ?
                              1 - Aller sur votre discussion et éditer votre premier message :


                              2 - Cliquer sur la liste déroulante Préfixe.

                              3 - Choisir le préfixe [Réglé].


                              4 - Et voilà… votre discussion est désormais identifiée comme réglée.

                              2 sur 2 < >

                              Assistance au forum - Outil de publication d'infos de votre site

                              Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

                              Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

                              Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

                              UTILISER À VOS PROPRES RISQUES :
                              L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

                              Problèmes connus :
                              FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

                              Installation :

                              1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

                              Archive zip : https://github.com/AFUJ/FPA/zipball/master

                              2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

                              3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

                              4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

                              5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

                              6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
                              et remplacer www. votresite .com par votre nom de domaine


                              Exemples:
                              Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
                              Télécharger le script fpa-fr.php dans: /public_html/
                              Pour executer le script: http://www..com/fpa-fr.php

                              Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
                              Télécharger le script fpa-fr.php dans: /public_html/cms/
                              Pour executer le script: http://www..com/cms/fpa-fr.php

                              En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

                              Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
                              Voir plus
                              Voir moins

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X