DedeCMS跳转到移动端适配,获取当前页面URL

DedeCMS根据用户访问设备JS跳转到与PC对应的移动端URL,如何调用对应的页面URL?URL种类有首页、列表页、内容页;又分为动态URL(带或不带参数,一般URL"?"后面的就是参数)、静态URL。

带参数的动态URL:
http://www.zuola.net/plus/list.php?tid=85&zxfg=%B5%D8%D6%D0%BA%A3
静态URL:
http://www.zuola.net/zhuangxiu_xiaoguotu/

上面两个PC端URL分别跳转到如下移动端URL

http://www.zuola.net/plus/wap_list.php?tid=85&zxfg=%B5%D8%D6%D0%BA%A3
http://m.zuola.net/dedecms/

DedeCMSPC端跳转到移动端

PC端页面SEO设置

如果不设置好,虽然页面不一样,但大体上是一样,蜘蛛会重复收录PC端和WAP移动端,容易造成分权。

一般的处理办法是,PC用alternate声明与之对应的移动端URL,移动端用canonical声明只收录PC端的URL。

PC首页跳转WAP首页

把下面代码放在PC端的</head>之前。下面称为通用代码。

<link rel="alternate" media="only screen and (max-width: 640px)" href="http://m.zuola.net/">
<meta http-equiv="mobile-agent" content="format=xhtml;url=http://m.zuola.net/">
<script type="text/javascript">if(window.location.toString().indexOf('pref=padindex') != -1){}else{if(/AppleWebKit.*Mobile/i.test(navigator.userAgent) || (/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/.test(navigator.userAgent))){if(window.location.href.indexOf("?mobile")<0){try{if(/Android|Windows Phone|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)){window.location.href="http://wap.zuola.net/";}else if(/iPad/i.test(navigator.userAgent)){}else{}}catch(e){}}}}</script>

PC列表跳转WAP列表

先来看看PC端URL不带参数的跳转到移动端调用方法

这是列表页的URL,列表页、内容页都可以用{dede:field.typeurl /}获取,PC端对应页面需要用到PHP str_replace函数,把下面代码替换通用代码对应部分

{dede:field.typeurl function = "str_replace('http://www.zuola.net' , 'http://wap.zuola.net.com' , @me);"/}

说明:可以根据实际需要进行修改橙色部分内容,前面一个是PC端的URL,后面是WAP移动端URL。

相同的道理,WAP移动端内容页URL调用

{dede:field.arcurl function = "str_replace('http://www.zuola.net' , 'http://wap.zuola.net' , @me)"/}

PC端URL带参数的跳转到移动端调用方法

这是前面做的一个重庆装修公司站装修效果图筛选的遇到的问题,当时做PC与WAP静态URL,参考文章《DedeCMS一个后台管理PC移动端纯静态非官方版》,但筛选部分还是动态URL,先看下面的带参数的URL:

http://www.zuola.net/plus/list.php?tid=85&zxfg=%B5%D8%D6%D0%BA%A3

跳转到

http://www.zuola.net/plus/wap_list.php?tid=85&zxfg=%B5%D8%D6%D0%BA%A3

可直接复制链接看具体形式,只能通过其他方法获取当前URL,再用str_replace改写,获取方法如下:

{dede:geturl runphp='yes'}
 @me = GetCurUrl(); //获取当前URL
 @me = str_replace('/plus/list.php' , 'http://www.zuola.net/plus/wap_list.php' , @me);
{/dede:geturl}

geturl函数调用的是相对路径,根据实际需要修改为绝对路径。如果是用二级域名的URL,直接把二级域名写在geturl函数前面即可。

注意:此方法不适用静态页面,不过如果是筛选(带参数)可以完全使用动态页面。

PC内容页跳转WAP内容页

这个就简单了,不管是静态URL还是动态URL都通用。把下面代码替换通用代码相应部分。

{dede:field.arcurl function="str_replace('http://www.zuola.netzuola.net' , 'http://m.zuola.net' , @me)"/}

WAP移动端页面SEO设置

       在</head>之前添加canonical声明。

<link rel="canonical" href="http://www.zuola.net/">