如何为特定的 UserAgent 字符串使用不同的 joomla 模板
How to use different joomla template for a specific UserAgent String
我有一个 Joomla 插件驱动的门户。该插件已安装并在浏览器中执行我需要的操作。现在我正在尝试直接使用 joomla-plugin html 构建一个 WebView
应用程序。我可以通过设计一个看起来像我的应用程序的新 joomla 模板来做到这一点。现在,如果我激活模板,它将接管网络版本。
我怎样才能解决可能使用 UserAgent
字符串或其他任何指定请求来自应用程序的问题,这样我就可以使用设计的模板而不是默认模板,而默认模板仍然存在在其他网络浏览器中工作。
提前致谢。
1。如何让webview识别自己
如果您完全控制 Web 视图代码,您当然可以发送预定义的 UserAgent 字符串或更好的自定义 header(例如 "X-App: my-webview")。
如果您只想按品牌/屏幕/功能识别某些设备,您可能想看看 WURFL 项目。
2。如何在 Joomla 中切换模板
您必须编写一个系统插件来侦听 "onAfterInitalise" 事件,检查自定义 UserAgent / header,并相应地切换模板。代码将或多或少像这样(未经测试):
<?php
defined('_JEXEC') or die;
jimport('joomla.environment.browser');
class plgSystemTemplateswitcher extends JPlugin
{
private $webViewUserAgent = "myWebViewUserAgent";
private $webViewTemplate = "myWebViewTemplate";
public function onAfterInitialise()
{
if ($this->getUserAgent() == $this->webViewUserAgent)
{
$this->setTemplate($this->webViewTemplate);
}
}
private function getUserAgent()
{
$browser = JBrowser::getInstance();
return $browser->getAgentString();
}
private function setTemplate($template)
{
$app = JFactory::getApplication();
$app->setTemplate($template);
}
}
我有一个 Joomla 插件驱动的门户。该插件已安装并在浏览器中执行我需要的操作。现在我正在尝试直接使用 joomla-plugin html 构建一个 WebView
应用程序。我可以通过设计一个看起来像我的应用程序的新 joomla 模板来做到这一点。现在,如果我激活模板,它将接管网络版本。
我怎样才能解决可能使用 UserAgent
字符串或其他任何指定请求来自应用程序的问题,这样我就可以使用设计的模板而不是默认模板,而默认模板仍然存在在其他网络浏览器中工作。
提前致谢。
1。如何让webview识别自己
如果您完全控制 Web 视图代码,您当然可以发送预定义的 UserAgent 字符串或更好的自定义 header(例如 "X-App: my-webview")。
如果您只想按品牌/屏幕/功能识别某些设备,您可能想看看 WURFL 项目。
2。如何在 Joomla 中切换模板
您必须编写一个系统插件来侦听 "onAfterInitalise" 事件,检查自定义 UserAgent / header,并相应地切换模板。代码将或多或少像这样(未经测试):
<?php
defined('_JEXEC') or die;
jimport('joomla.environment.browser');
class plgSystemTemplateswitcher extends JPlugin
{
private $webViewUserAgent = "myWebViewUserAgent";
private $webViewTemplate = "myWebViewTemplate";
public function onAfterInitialise()
{
if ($this->getUserAgent() == $this->webViewUserAgent)
{
$this->setTemplate($this->webViewTemplate);
}
}
private function getUserAgent()
{
$browser = JBrowser::getInstance();
return $browser->getAgentString();
}
private function setTemplate($template)
{
$app = JFactory::getApplication();
$app->setTemplate($template);
}
}