Heim  >  Artikel  >  Backend-Entwicklung  >  TP5 bestimmt die mobile Version und die PC-Version

TP5 bestimmt die mobile Version und die PC-Version

不言
不言Original
2018-07-05 14:25:015972Durchsuche

Dieser Artikel stellt hauptsächlich die Beurteilung von Mobiltelefonen und PCs in TP5 vor, die einen gewissen Referenzwert hat. Jetzt kann ich ihn mit allen Freunden in Not teilen.

Beurteilung von Mobiltelefonen und PCs TP5

1. Verwenden Sie eine benutzerdefinierte Bestimmungsmethode

  1. Schreiben Sie zunächst die ismobile-Methode, die zur Bestimmung der Geräteanmeldung verwendet wird, in die application>common.php öffentliche Datei:

    rrree
  2. Schreiben Sie dann die Abrufmethode im Basisklassen-Controller neu. Basis des application>index>controller>Base.php Front-End-Indexmoduls:

    function ismobile()
    {
        // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
        if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))
            return true;
    
        //此条摘自TPM智能切换模板引擎,适合TPM开发
        if (isset ($_SERVER['HTTP_CLIENT']) && 'PhoneClient' == $_SERVER['HTTP_CLIENT'])
            return true;
        //如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
        if (isset ($_SERVER['HTTP_VIA']))
            //找不到为flase,否则为true
            return stristr($_SERVER['HTTP_VIA'], 'wap') ? true : false;
        //判断手机发送的客户端标志,兼容性有待提高
        if (isset ($_SERVER['HTTP_USER_AGENT'])) {
            $clientkeywords = array(
                'nokia', 'sony', 'ericsson', 'mot', 'samsung', 'htc', 'sgh', 'lg', 'sharp', 'sie-', 'philips', 'panasonic', 'alcatel', 'lenovo', 'iphone', 'ipod', 'blackberry', 'meizu', 'android', 'netfront', 'symbian', 'ucweb', 'windowsce', 'palm', 'operamini', 'operamobi', 'openwave', 'nexusone', 'cldc', 'midp', 'wap', 'mobile'
            );
            //从HTTP_USER_AGENT中查找手机浏览器的关键字
            if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {
                return true;
            }
        }
        //协议法,因为有可能不准确,放到最后判断
        if (isset ($_SERVER['HTTP_ACCEPT'])) {
            // 如果只支持wml并且不支持html那一定是移动设备
            // 如果支持wml和html但是wml在html之前则是移动设备
            if ((strpos($_SERVER[&#39;HTTP_ACCEPT&#39;], &#39;vnd.wap.wml&#39;) !== false) && (strpos($_SERVER[&#39;HTTP_ACCEPT&#39;], &#39;text/html&#39;) === false || (strpos($_SERVER[&#39;HTTP_ACCEPT&#39;], &#39;vnd.wap.wml&#39;) < strpos($_SERVER[&#39;HTTP_ACCEPT&#39;], &#39;text/html&#39;)))) {
                return true;
            }
        }
        return false;
    }
  3. Zum Schluss erben Sie von der Basisklasse in application>index>controller>Index In der Indexmethode des Base-Controller-Index können jeweils der Pfad auf der PC-Seite und der Pfad auf der mobilen Seite übergeben werden.

    /**
     *加载模板输出(电脑和手机)
     * @accessprotected
     * @paramstring$template模板文件名
     * @paramstring$mobiletemplate手机模板文件名
     * @paramarray$vars模板输出变量
     * @paramarray$replace模板替换
     * @paramarray$config模板参数
     * @returnmixed
     */
    protected
    function fetch($template = &#39;&#39;, $mobiletemplate = &#39;&#39;, $vars = [], $replace = [], $config = [])
    {
        if (ismobile()) {
            return $this->view->fetch($mobiletemplate, $vars, $replace, $config);
        } else {
            return $this->view->fetch($template, $vars, $replace, $config);
        }
    }

    Das default/index/index davor ist der Pfad, der der PC-Seite entspricht, und das mobile/index/index dahinter ist der Pfad, der der mobilen Seite entspricht.

2. Verwenden Sie die Beurteilungsmethode, die mit TP5 geliefert wird (empfohlen, optimiert)

Durch die obige Methode können wir sehen, dass sie funktioniert , aber es ist sehr umständlich, jedes Mal auf zwei Wegen zu gehen.

  1. Schreiben Sie zunächst die Konstante, die zur Bestimmung der Geräteanmeldung verwendet wird, in die application>common.php öffentliche Datei VIEW_PATH:

    return $this->fetch(&#39;default/index/index&#39;,&#39;mobile/index/index&#39;);
  2. Ersetzen Sie dann die Vorlagenvariablen in der Konfigurationsdatei config.php des application>index>config.php Modulindex:

    if (\think\Request::instance()->isMobile()) {
        define(&#39;VIEW_PATH&#39;, __DIR__ . &#39;/../application/index/view/mobile/&#39;);
    } else {
        define(&#39;VIEW_PATH&#39;, __DIR__ . &#39;/../application/index/view/default/&#39;);
    
    }
  3. Zum Schluss müssen Sie nur noch eine direkt in der Controller-Methode abrufen Weg reicht.

    return [
        "template"=>[
            // 模板路径
            &#39;view_path&#39; => VIEW_PATH,
        ],
    ];

Tipp: Die Verzeichnisstruktur der Startseite ist wie in der Abbildung dargestellt:
Beachten Sie, dass die Verzeichnisstruktur unter Standard und Mobil konsistent ist

TP5 bestimmt die mobile Version und die PC-Version

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

So weisen Sie Werte in einem Array einer Reihe von Variablen in PHP zu

Laravel im Terminal So zeigen Sie Protokolle an

Das obige ist der detaillierte Inhalt vonTP5 bestimmt die mobile Version und die PC-Version. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn