DedeCMS实现URL不变PC和移动端展示不同模板
今天我们分享一篇实现URL不变PC和移动端展示不同模板的方法,文章来源做啦,复制请保留原创超链接:https://www.zuola.net/web/755.html。
做移动端的方法吖七介绍过许多,除了流行的小程序,目前移动端主流的方式有通过二级目录或二级域名的实现,也可以用CSS自适应的方式实现。当然,如果网站的后台不支持,也可以通过向百度提交移动端转码规则实现,但功能及模板比较单一。下面通过URL了解:
PC端与移动端URL主流方式(静态/伪静态)
PC端:http://www.zuola.net/
移动端URL(1):http://www.zuola.net/m/
移动端URL(2):http://m.zuola.net/
另外还有许多动态URL方式,至于哪种方式比较好,百度官*方表明将一视同仁,那大家就不必追求了,但是要做好必要适配。
建议大家采用URL不变的的自适应做法,虽然不存在权重更集中的说法,但从本人做很多网站SEO优化的结果上看表现更好些。
移动端采用CSS自适应主要优点
- 网站URL形式不复杂,不需要改写与PC对应的移动端URL,对无PHP基础的童鞋很友好。
- 蜘蛛抓取不需要判断是否是PC或者移动端,抓取效率提高。
- 模板建设仅需要一套模板,写好CSS自适应代码即可。
- 一个后台管理内容,时间成本低,区别一些静态页面网站需要切换不同的后台或者修改源代码以生成不同的页面。
当然,老网站模板改起来比较麻烦,重构的时间成本反而更低。下面介绍另一种做法:适合动态或者伪静态的网站,URL保持不变,通过服务器判断(PHP方法)来访用户的客户端,选择不同的模板展示给用户。
URL不变PC和移动端展示不同模板
找到/include/extend.func.php,最下面增加以下代码
/** * 判断是否为移动设备访问 * @return bool */ function isMobile() { if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) { return true; } if (isset($_SERVER['HTTP_VIA'])) { 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'); if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) { return true; } } if (isset($_SERVER['HTTP_ACCEPT'])) { if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'textml') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'textml')))) { return true; } } return false; } |
1.首页处理
打开/index.php,找到
$row['templet'] = MfTemplet($row['templet']); |
在上面增加代码
if(isMobile()){ $row['templet'] =str_replace('.htm','_m.htm',$row['templet']); } |
2.列表页/内容页/搜索页/TAG页面处理
打开/plus/list.php,/plus/view.php,/plus/search.php,/plus/tags.php找到
require_once(dirname(__FILE__)."/../include/common.inc.php"); |
下面增加代码
if(isMobile()){ define('DEDEMOB', 'Y'); } |
这样就处理完毕了,首页PC模板 index.htm 对应的移动端模板为 index_m.htm,以此类推,PC对应的移动端模板命名方式".htm"前面加"_m",也就是"_m.htm",需要放在同一模板目录下。移动端模板调用的图片、js、CSS等需要调整好路径,以免造成错误。
/m目录可以直接删除了,不会对系统造成任何影响,也不需要对移动端页面里面的URL进行改写。