如何为特定的 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);
    }     
}