web-dev-qa-db-ja.com

joomlaプラグインからcookieを設定する

Androidデバイスのみからサイトを閲覧しているユーザーにアプリダウンロードメッセージ(画像)を表示したいので、これを実現するためのプラグインを開発しました。今、このメッセージを初めて表示するだけです。ここで、Cookieを設定する必要があります。ここでは、Cookieが最初に設定されているかどうかを確認し、メッセージを表示せずにメッセージを表示しますが、条件が機能せず、毎回メッセージが表示されます。

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

}

どうすればこれを達成できますか? joomla 3でCookieを設定および取得する方法

4
Ram Guru99

まず第一に、あなたは最初にこのコードをあなたのテンプレートに適合させることを試みることができます。そこにあなたにもっと柔軟性を与えるかもしれません。

onAfterRenderは、コンテンツをいじったり、Cookieを設定したり、Cookieを読み取ったりするのに適切ではないようです。

プラグインが実際に呼び出されていることを確認しますか?とにかく、ブラウザコンソールでステータスを確認してください。

2
Valentin Despa