web-dev-qa-db-fra.com

Définir le cookie dans le plugin joomla

Je souhaite afficher le message de téléchargement d'application (une image) pour les utilisateurs parcourant mon site à partir de Android uniquement. J'ai donc développé un plugin à cette fin. Je souhaite maintenant afficher ce message uniquement pour la première fois. Donc, je dois définir un cookie.Voici, je vérifie si le cookie est configuré en premier, puis ne pas afficher le message, sinon afficher le message, mais la condition ne fonctionne pas, il affiche le message à chaque fois.

<?php

defined('_JEXEC') or die;
jimport('joomla.plugin.plugin');

class plgsystemandroidmsg extends JPlugin {

    function onAfterRender() {
        $app = JFactory::getApplication();
        $htmlString = $app->getBody();
        if ($app->isAdmin()) {
            return;
        }
        $uri = JFactory::getURI();
        if (isset($_SERVER['HTTP_USER_AGENT'])) {
            $ua = strtolower($_SERVER['HTTP_USER_AGENT']);
            if (stripos($ua, 'Android') !== false) {
                $cookieName = 'mymsgseen';
                $cookieValue = $app->input->cookie->get($cookieName);
                if ($cookieValue != null && $cookieValue == 1) {
                    $htmlString = 'cookie is set : ' . $cookieValue;
                    $app->setBody($htmlString);
                } else {
                    $cookieValue = 1;
                    $expire = time() + 60 * 60 * 24 * 30;
                    $app->input->cookie->set($cookieName, $cookieValue, $expire);
                    $htmlString = 'cookie is not set';
                    $app->setBody($htmlString);
                }
            }
        }
        return true;
    }

}

comment puis-je atteindre cet objectif? comment paramétrer et obtenir des cookies dans joomla 3?

4
Ram Guru99

Tout d'abord, vous pouvez d'abord essayer d'adapter ce code à votre modèle. Si peut vous donner plus de flexibilité là-bas.

onAfterRender ne me semble pas convenir de modifier le contenu et de définir des cookies/lire des cookies.

Êtes-vous sûr que votre plugin est appelé? Quoi qu'il en soit, vérifiez la console de votre navigateur pour voir l'état.

2
Valentin Despa