web-dev-qa-db-fra.com

popup onUserAfterLogin - Plugin Joomla 3.6.4

J'ai besoin de créer un plugin qui affiche une fenêtre contextuelle lorsqu'un utilisateur se connecte sur mon site Web Joomla 3.6.4. Je sais que je dois créer un plug-in et déclencher l'événement onUserAfterLogin, mais je ne sais pas comment créer du code HTML et Javascript à partir d'un plug-in. Donc, mon popuplogin.xml est:

    <?xml version="1.0" encoding="utf-8"?>
<extension version="3.6" type="plugin" group="user" method="upgrade">
        <name>Popuplogin</name>
        <author>XX</author>
        <creationDate>08/03/2018</creationDate>
        <copyright>2018</copyright>
        <license>GNU General Public License</license>
        <authorEmail>XXX</authorEmail>
        <authorUrl>XXX</authorUrl>
        <version>1.0</version>
        <description>Plugin to display a modal after UserLogin</description>
        <files>
                <filename plugin="popuplogin">popuplogin.php</filename>
                <filename>index.html</filename>
        </files>
</extension>

Et mon popuplogin.php est:

    <?php

// no direct access
defined('_JEXEC') or die;


class PlgUserPopuplogin extends JPlugin
{
    public function onUserAfterLogin($options)
        {
              return 'I think I need to place Javascript/HTML here';
 }
}

?>

Avec ces fichiers, rien ne se passe, même si je place un simple <p>I am the login popup</p> retour à l'intérieur. Pouvez-vous s'il vous plaît expliquer comment puis-je afficher correctement un message en utilisant un plugin dans Joomla?

3
OlafGizursson

La valeur de retour de onUserAfterLogin() doit être un booléen - c'est-à-dire true ou false. L'idée est que vous pouvez utiliser ce gestionnaire d'événements pour effectuer une validation supplémentaire sur la connexion. Ainsi, si vous renvoyez false, cela indique que la connexion doit être rejetée.

Ce que vous voulez faire est très différent. vous essayez d'ajouter du contenu à la page après la connexion. Il y a plusieurs façons de faire cela.

  • Option 1: Si un modal ne vous inquiète pas, vous pouvez simplement utiliser le système de messagerie de Joomla pour dire quelque chose à l'utilisateur:

    JError::raiseNotice(100, "Put whatever message you want to tell the user here.");
    
  • Option 2: Utilisez une extension telle que Modal Labs Regular , afin de pouvoir afficher une alerte modale avec un code minimum. Vous n’auriez probablement pas besoin de beaucoup plus d’une ligne dans votre plugin existant pour appeler le modal avec le message que vous voulez afficher.

  • Option 3: écrivez vous-même le modal à l'aide de JavaScript et insérez-le dans la page à l'aide de addScript() ou addScriptDeclaration(), comme décrit dans la documentation Joomla ici: https: // docs .joomla.org/Adding_JavaScript

3
Simba