Php 创建一个插件,在joomla中以完整的页面正文显示修改后的内容
我想向从Android设备浏览的用户显示下载Android应用程序消息(图像)。为此,我创建了一个内容插件,但它不能正常工作。它也向桌面用户显示消息,并且只显示在文章内容的地方。我想在整个页面正文中显示此图像,除此之外不应显示其他内容(如页眉、菜单、页脚、侧边栏)。我是joomla development的新手,请提供帮助 这是我的androidmsg.phpPhp 创建一个插件,在joomla中以完整的页面正文显示修改后的内容,php,android,plugins,joomla,joomla3.0,Php,Android,Plugins,Joomla,Joomla3.0,我想向从Android设备浏览的用户显示下载Android应用程序消息(图像)。为此,我创建了一个内容插件,但它不能正常工作。它也向桌面用户显示消息,并且只显示在文章内容的地方。我想在整个页面正文中显示此图像,除此之外不应显示其他内容(如页眉、菜单、页脚、侧边栏)。我是joomla development的新手,请提供帮助 这是我的androidmsg.php <?php defined('_JEXEC') or die; defined('JPATH_BASE') or die; ji
<?php
defined('_JEXEC') or die;
defined('JPATH_BASE') or die;
jimport('joomla.plugin.plugin');
class plgcontentandroidmsg extends JPlugin {
function __construct(&$subject, $params) {
parent::__construct($subject, $params);
}
function onContentPrepare($context, &$article, &$params, $offset = 0) {
$app = JFactory::getApplication();
if ($app->isAdmin()) {
return;
}
$title = &$article->title;
$text = &$article->text;
$uri = JFactory::getURI();
if (isset($_SERVER['HTTP_USER_AGENT'])) {
$ua = strtolower($_SERVER['HTTP_USER_AGENT']);
if (stripos($ua, 'android') !== false) {
if (isset($_COOKIE["user"])) {
$app->redirect($uri);
} else {
$expire = time() + 60 * 60 * 24 * 30;
setcookie("user", "app_android", $expire);
$text = '<div><img src="'. JPATH_BASE .'/abc/abc.png"/></div>';
}
}
}
return true;
}
}
我用一个简单的echo
测试了这段代码,效果很好。你在测试什么版本的Android?Android上的哪个浏览器呢?嘿@Lodder,我正在用firefox浏览器在Android 4.2.2上测试它。它适用于Android,但当我在pc(Win7-chrome)上测试它时,它也会显示消息。我想在完整的网页中显示这张图片,我的网站是,我想这可能是由于您正在使用的插件事件(onContentPrepare
)造成的,但我不能100%确定。使用在加载框架之前触发的事件检测Android可能是一个好主意,例如onBeforeRender
。嘿@Lodder,谢谢你的建议。我已经用onAfterRender事件完成了,但现在它显示了“headers ready send error”。警告:无法修改已发送的标题信息标题(输出从/home/gurutest/public_html/components/com_invitex/helper.php:1开始),在/home/gurutest/public_html/plugins/system/androidmsg/androidmsg.php第32行,我更新的代码是@Lodder,我只想显示这条消息一次,所以我设置了一个cookie并检查它的值,但它每次都显示消息,cookie没有设置code$cookieName='mymsgseen'代码>$cookieValue=$app->input->cookie->get($cookieName)
如果($cookieValue!=null&&$cookieValue==1){
$htmlString='cookie已设置:'.$cookieValue;
setBody($htmlString);
$cookieValue=1;
$expire=time()+60*60*24*30;
$app->>input cookie集($cookie>);
}