在dedecms系统中主要常用到的有index.php view.php list.php。
如下以dedecms5.7为例子:
1.需要修改的路径有
/index.php
/include/arc.archives.class.php
/include/arc.listview.class.php
2.我们需要在模板目录下新建mobile目录
/templets/mobile/
将/templets/default/整个文件夹丢到/templets/mobile/
就变成如下/templets/mobile/default
判断是否为手机版的方法 三个地方都会用到
3-1判断方法
/** * 判断是否为手机版 true是手机版 * @return boolean */ function is_mobile() { if (empty($_SERVER['HTTP_USER_AGENT'])) { return false; } $user_agent = $_SERVER['HTTP_USER_AGENT']; $mobile_agents = Array("240x320", "acer", "acoon", "acs-", "abacho", "ahong", "airness", "alcatel", "amoi", "android", "anywhereyougo.com", "applewebkit/525", "applewebkit/532", "asus", "audio", "au-mic", "avantogo", "becker", "benq", "bilbo", "bird", "blackberry", "blazer", "bleu", "cdm-", "compal", "coolpad", "danger", "dbtel", "dopod", "elaine", "eric", "etouch", "fly ", "fly_", "fly-", "go.web", "goodaccess", "gradiente", "grundig", "haier", "hedy", "hitachi", "htc", "huawei", "hutchison", "inno", "ipad", "ipaq", "ipod", "jbrowser", "kddi", "kgt", "kwc", "lenovo", "lg ", "lg2", "lg3", "lg4", "lg5", "lg7", "lg8", "lg9", "lg-", "lge-", "lge9", "longcos", "maemo", "mercator", "meridian", "micromax", "midp", "mini", "mitsu", "mmm", "mmp", "mobi", "mot-", "moto", "nec-", "netfront", "newgen", "nexian", "nf-browser", "nintendo", "nitro", "nokia", "nook", "novarra", "obigo", "palm", "panasonic", "pantech", "philips", "phone", "pg-", "playstation", "pocket", "pt-", "qc-", "qtek", "rover", "sagem", "sama", "samu", "sanyo", "samsung", "sch-", "scooter", "sec-", "sendo", "sgh-", "sharp", "siemens", "sie-", "softbank", "sony", "spice", "sprint", "spv", "symbian", "tablet", "talkabout", "tcl-", "teleca", "telit", "tianyu", "tim-", "toshiba", "tsm", "up.browser", "utec", "utstar", "verykool", "virgin", "vk-", "voda", "voxtel", "vx", "wap", "wellco", "wig browser", "wii", "windows ce", "wireless", "xda", "xde", "zte"); $is_mobile = false; foreach ($mobile_agents as $device) { if (stristr($user_agent, $device)) { $is_mobile = true; break; } } return $is_mobile; }
3.修改/index.php
找到里面的$pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/" . $row['templet']);
将3-1方法放到index.php的后面即可
替换成
if (is_mobile()) { $pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/mobile/" . $row['templet']); } else { $pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/" . $row['templet']); }
这样首页就折腾完了
修改/templets/mobile/default/index.htm即可
然后在模板里面引入其他的模板地址也需要改变
{dede:include filename="/mobile/default/head.htm"/} 所有的模板前面多了/mobile/default/
4.修改/include/arc.archives.class.php
还是一样将方法放入类中
在if($this->TypeLink->TypeInfos['corank'] > 0 && $this->Fields['arcrank']==0)上面添加如下代码:
if($this->is_mobile()) { $this->TypeLink->modDir=$this->TypeLink->modDir."/mobile"; $this->TypeLink->TypeInfos['tempindex']="mobile/".$this->TypeLink->TypeInfos['tempindex']; $this->TypeLink->TypeInfos['templist']="mobile/".$this->TypeLink->TypeInfos['templist']; $this->TypeLink->TypeInfos['temparticle']="mobile/".$this->TypeLink->TypeInfos['temparticle']; }
5.修改/include/arc.listview.class.php
还是一样将方法放入类中
在 if(!$this->IsError)上面添加
if($this->is_mobile()) { $this->TypeLink->modDir=$this->TypeLink->modDir."/mobile"; $this->TypeLink->TypeInfos['tempindex']="mobile/".$this->TypeLink->TypeInfos['tempindex']; $this->TypeLink->TypeInfos['templist']="mobile/".$this->TypeLink->TypeInfos['templist']; $this->TypeLink->TypeInfos['temparticle']="mobile/".$this->TypeLink->TypeInfos['temparticle']; }
这样就完成了 整个手机版的修改 这样在mobile/default新增和修改对应的模板就能访问到独立的手机版HTML