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を設定および取得する方法
まず第一に、あなたは最初にこのコードをあなたのテンプレートに適合させることを試みることができます。そこにあなたにもっと柔軟性を与えるかもしれません。
onAfterRender
は、コンテンツをいじったり、Cookieを設定したり、Cookieを読み取ったりするのに適切ではないようです。
プラグインが実際に呼び出されていることを確認しますか?とにかく、ブラウザコンソールでステータスを確認してください。