CMS插件实现根据域名判断显示不同模板

ron0227 8月前 488

由于我的网站需要多个域名多个模板来做跳转适配,而不是自适应或者代码适应,所以需要去判断二级给不同的模板,PHP小白,也不知道这么写合理不。

\addons\cms\controller\base.php

$config = get_addon_config('cms'); 下方加代码

//explode切割域名
$domain = explode('.', $this->request->host());
//判断xxx xxx.fa.com
if($domain[0] == 'm'){
    //手机端
    $config['theme'] = $config['theme']."_m";
}else if($domain[0] == 'mip'){
    //mip端
    $config['theme'] = $config['theme']."_mip";
}

然后在\addons\cms\view里建立对应的模板文件
image.png

里面的文件和默认的保持一致,要不然会提示模板不存在花卉大全

最后于 8月前 被ron0227编辑
最新回复 (3)
  • Karson 打赏 8月前
    感谢TA
    0 引用 2

    感谢你的分享~

  • szysky 8月前
    感谢TA
    0 引用 3

    感觉最好还是做个wap版的插件模块

  • LEo 1月前
    感谢TA
    0 引用 4

    我就直接判断是否手机端访问,如果是采用手机端模板,默认PC端。

    在addonscmscontrollerbase.php
    $config = get_addon_config('cms'); 下方加代码
    //判断PC端或WAP端访问
    if($this->isMobile()){

     $config['theme'] = $config['theme']."_m";

    }

    然后在最后面加个函数方法:
    /**

     * 检测是否使用手机访问
     * @access public
     * @return bool
     */
    public function isMobile()
    {
        if (isset($_SERVER['HTTP_VIA']) && stristr($_SERVER['HTTP_VIA'], "wap")) {
            return true;
        } elseif (isset($_SERVER['HTTP_ACCEPT']) && strpos(strtoupper($_SERVER['HTTP_ACCEPT']), "VND.WAP.WML")) {
            return true;
        } elseif (isset($_SERVER['HTTP_X_WAP_PROFILE']) || isset($_SERVER['HTTP_PROFILE'])) {
            return true;
        } elseif (isset($_SERVER['HTTP_USER_AGENT']) && preg_match('/(blackberry|configuration\/cldc|hp |hp-|htc |htc_|htc-|iemobile|kindle|midp|mmp|motorola|mobile|nokia|opera mini|opera |Googlebot-Mobile|YahooSeeker\/M1A1-R2D2|android|iphone|ipod|mobi|palm|palmos|pocket|portalmmm|ppc;|smartphone|sonyericsson|sqh|spv|symbian|treo|up.browser|up.link|vodafone|windows ce|xda |xda_)/i', $_SERVER['HTTP_USER_AGENT'])) {
            return true;
        } else {
            return false;
        }
    }
    
  • 未登录
    5
返回