Joomla 5 et variable de session

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

  • [RÉGLÉ] Joomla 5 et variable de session



    Bonsoir




    Je développe un site sous Joomla 5 je et je galère à utiliser des variables de session personnalisées. Je travaille sur un site pour une association cycliste: il y a des cyclos route et des cyclos balade . Je voudrais leur proposer du contenu personnalisé en fonction de leur façon de rouler

    Je ne sais pas bien quelle méthode utiliser. j'en ai essayer plusieurs sans succès.

    Parmi celles qui reviennent souvent, j'ai ici

    https://docs.joomla.org/How_to_acces...by_an_external _script




    Merci
    Dernière édition par BefBefBef à 27/03/2024, 21h41

  • #2
    Hello.
    Code PHP:
    setUserState et getUserState 
    seront tes amies pour stocker en session.

    Voir : https://docs.joomla.org/How_to_use_user_state_variables

    Toutefois je pense que tu devrais utiliser les groupes d'utilisateurs pour proposer des affichages personnalisés selon les préferences de chacun.

    Avec peut-être un champ dans le profil du membre, lui demandant ses activités favorites.
    Tu te servirais alors de cette valeur pour l'affecter au usergroup adéquat via un petit plugin system.

    A partir de cette affectation tu pourras facillement cibler chaque élément du contenu de ton site pour l'adapter à l'attente de ton membre (contenu, photos, videos, NewsLetters, etc...)
    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


    • #3
      Je mets le code suivant:
      Code PHP:
      $session JFactory::getSession();
      $registry $session->get('registry');
      $registry->set('myvar'$myvarvalue);​ 
      et qu'ensuite, je fais un
      Code PHP:
      print $myvarvalue
      Je ne récupère rien! Je pense que je devrais avoir myvar, non?

      Commentaire


      • #4
        Hello.

        Ne t'embete pas à gerer la session, le framework le fait très bien.

        Code PHP:
        $this->app->setUserState($this->context.'.myvar'$myvarvalue);​ 
        Code PHP:
        $value $this->app->getUserState($this->context.'.myvar'null);​ 
        • $this->context contient ton contexte par exemple nomducomposant.nomdelavueoudumodel
        • $this->app l'application en cours (generalement dans le constructeur de la classe ou de la classe mère)
          Code PHP:
          $this->app Factory::getApplication();​ 
        • le 2ème parametre étant facultatif (valeur par defaut)

        Et comme dit dans ma réponse, je ne vois pas trop le rapport avec le contenu personnalisé.
        Dernière édition par roland_d_alsace à 25/03/2024, 08h15
        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


        • #5
          Je souhaite faire une page/article Joomla connexion ou je mets la variable de session à "route", "balade" ou "admin"
          Ensuite, dans les autres pages, je teste la variable
          - si c'est "admin", j'affiche le contenu 1
          - si c'est "route", j'affiche le contenu 2
          - si c'est "balade", j'affiche le contenu 3


          Concenant le code, ça ne fonctionne pas:
          Dans un fichier PHP commun que j'appelle sur toutes les pages, je place
          Code PHP:
          $this->app Factory::getApplication();​ 
          Il me dit qu'il ne connaît pas $this. J'imagine qu'il faut définir $this en tant qu'objet (... comment faire?)
          Ensuite, sur la page connexion, j'affecte la variable
          Code PHP:
          $this->app->setUserState($this->context.'admin_route_ou_balade'$myvarvalue);​ 
          Puis, sur chaque page/article Joomla du site,
          Code PHP:
          $value $this->app->getUserState($this->context.'.myvar'null);​ 
          C'est bien comme ça qu'il faut procéder?
          Dernière édition par BefBefBef à 26/03/2024, 11h42

          Commentaire


          • #6
            J'ai trouvé comment gérer une variable de session en utilisant ce lien

            Note: This post is a bit advanced when it comes to Joomla - and is mainly targeted at developers who are developing an integrated solution for their clients using Joomla. So what is Joomla's registry? Joomla's registry is a temporary storage for variables that can be passed back and forth between different extensions on the

            Commentaire


            • #7
              Bonjour,

              Si je comprends bien, un membre enregistré s'identifie sur le site en disant qu'il veut accéder à la partie route, balade ou admin, ce qui veut dire que n'importe qui ayant un compte d'enregistré pourra accéder à ton "contenu1" ?
              "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
              MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

              Commentaire


              • #8
                Envoyé par BefBefBef Voir le message
                J'ai trouvé comment gérer une variable de session en utilisant ce lien

                Note: This post is a bit advanced when it comes to Joomla - and is mainly targeted at developers who are developing an integrated solution for their clients using Joomla. So what is Joomla's registry? Joomla's registry is a temporary storage for variables that can be passed back and forth between different extensions on the

                Utilise quand même un prefixe contextuel comme je te l'indique plus haut... pour nommer ta variable de session, afin d'éviter des collisions avec d'autres extensions.

                Et comme dit dans ma première réponse..., pour rejoindre les propos de RobertG, l'utilisation des usergroup pour définir l'affichage me parait bien + approprié.
                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


                • #9
                  Comment utiliser les usergroup? (J'ai une table "user" indépendante de Joomla)

                  Merci pour votre aide!

                  Commentaire


                  • #10
                    Envoyé par BefBefBef Voir le message
                    Comment utiliser les usergroup? (J'ai une table "user" indépendante de Joomla)

                    Merci pour votre aide!
                    Il faut que tu trouve une regle pour affecter tes utilisateurs à un ou plusieurs groupes d'utilisateurs.

                    Par exemple, dans mes sites de ligues sportives, en fonction du numero de licence d'un membre et du retour d'info du serveur de la Fédération, si c'est un Président de Club, je l'affecte automatiquement au groupe Joomla des présidents de club.
                    Ce qui lui donnera via l'ACL de Joomla le droit d'accès aux circulaires club par exemple, ou aux fichiers des licenciés de son club, aux liens de menus corresponants etc, etc...
                    Grand merci au framework de Joomla (c'est la raison pour laquelle moi j'ai choisi Joomla depuis la sortie des ACL avec la 1.6).

                    Dans ton cas, en fonction d'un questionnaire basé par exemple sur un champ perso dans le profil membre,, il faudrait que tu fasses un petit plugin pour exploiter la valeur retournée par ce champ perso et affecter ton membre au groupe 'route" ou "balade" ou même aux 2.

                    Tu peux aussi t'inspirer du plugin exemple de type "user", nommé "profile" qui est livré avec Joomla pour ajouter cette info dans le profil de Joomla et la stocker dans ton propre fichier membre.
                    C'est même plus simple encore ainsi, car tu n'auras qu'à ajouter les méthodes suivantes dans ce même plugin (enfin dans la copie que tu auras faite pour l'adapter à ton besoin bien sûr).

                    Les méthodes à utiliser à cet effet sont :
                    Code PHP:
                    use Joomla\CMS\User\UserHelper;
                    .
                    .
                    UserHelper::addUserToGroup​($userid$groupId)// ajout d'un membre à un usergroup
                    .
                    .
                    UserHelper::removeUserFromGroup($userid$groupid)// retrait d'un membre d'un usergroup

                    Pour définir les 2 usergroups Joomla correspondant à ton groupe "balade" et à ton groupe "route",
                    il te suffit d'utiliser d'un champ de type usergrouplist en paramètre de ton plugin par exemple
                    Voir : https://docs.joomla.org/User_Group_List_form_field_type
                    Ce qui te retournera le $groupid.

                    Bon dev.
                    Dernière édition par roland_d_alsace à 29/03/2024, 20h51
                    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

                    Annonce

                    Réduire
                    Aucune annonce pour le moment.

                    Partenaire de l'association

                    Réduire

                    Hébergeur Web PlanetHoster
                    Travaille ...
                    X