it-swarm.dev

Imposta cookie dal plugin joomla

Voglio mostrare il messaggio di download dell'app (un'immagine) agli utenti che navigano nel mio sito da Android. Quindi ho sviluppato un plug-in per raggiungere questo obiettivo. Ora voglio visualizzare questo messaggio solo la prima volta quindi, devo impostare i cookie. Qui sto controllando se i cookie sono impostati per primi, quindi non visualizzare il messaggio altrimenti visualizza il messaggio ma la condizione non funziona, mostra il messaggio ogni volta.

<?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;
    }

}

come posso raggiungere questo obiettivo? come impostare e ottenere i cookie in joomla 3?

4
Ram Guru99

Prima di tutto potresti provare a inserire questo codice nel tuo modello. Se può darti maggiore flessibilità lì.

onAfterRender non mi sembra giusto manipolare il contenuto e impostare cookie/leggere cookie.

Sei sicuro che il tuo plugin sia effettivamente chiamato? In ogni caso, controlla la console del browser per vedere lo stato.

2
Valentin Despa