web-dev-qa-db-fra.com

Changer le titre de l'élément de menu en fonction de l'état de connexion

J'utilise T3 Framework modèle vierge. Dans le megamenu, j'ai inséré le formulaire de connexion en tant que sous-menu. Il apparaît donc lorsque l'utilisateur survole l'élément de menu.

Je souhaite modifier le titre de l'élément de menu (ou le texte qui y figure), selon que l'utilisateur est connecté, par exemple. 'Login' s'ils ne le sont pas et 'hi (nom d'utilisateur)' quand ils le sont.

Est-ce possible, peut-être en ajoutant du php dans le modèle, sans créer 2 éléments de menu différents, un pour les utilisateurs invités et un autre pour les inscrits?

5
dfk_7677

C'est ce que j'ai fait:

Créez un remplacement du modèle pour mod_login

Une fois cela fait, ouvrez le fichier suivant:

templates/YOUR_TEMPLATE/html/mod_login/default_logout.php

et ajoutez ce qui suit:

$doc = JFactory::getDocument();
$doc->addScriptDeclaration('
    jQuery(document).ready(function($){ 
        $(".menu").find("a.something").empty().text("Hi ' . $user->username .'");
    });
');
1
Lodder

Si je comprends votre question, vous voulez masquer/changer l’élément de menu selon qu’une personne est connectée ou non?

OK, c’est ainsi que j’ai réussi à cacher le contenu des utilisateurs invités ou des utilisateurs connectés.

Créez un nouveau groupe 'Invité';

  • Créer un groupe d'invités dans le gestionnaire d'utilisateurs
  • Ajouter un nouveau niveau d'accès à la visualisation
  • Modifier le groupe d'invités par défaut dans les options du gestionnaire d'utilisateurs

Il y a un guide détaillé ici .

Alors;

  • Recherchez le module que vous souhaitez afficher pour Invités> Modifier> Définir l'accès à l'invité.
  • Recherchez le module que vous souhaitez voir pour les utilisateurs enregistrés> Modifier> Définir l'accès sur

Cela devrait résoudre vos problèmes de niveau d'accès.

Afin d'ajouter le 'Salut {Nom d'utilisateur}', j'ai utilisé NoNumbers Sourcerer et simplement faire écho à la $user->username dans le titre du module.

Sourcerer vérifie votre code php pour voir si vous référencez des objets/variables Joomla couramment utilisés, puis les crée pour vous. Cela signifie que vous n'avez pas à créer ces variables vous-même à chaque fois.

Peut-être pas la méthode la plus propre (comparée à @Lodders), mais cela fonctionne et est facilement répliqué pour d'autres modules, etc.

J'espère que cela t'aides!

4
jonboy