当前位置 : 主页 > 网站建设 > 正文

DedeCMS实现URL不变PC和移动端展示不同模板

原创

重庆seo2020-12-01 09:10:43阅读()移动端URL路径A+ / A-

DedeCMS实现URL不变PC和移动端展示不同模板

做移动端的方法吖七介绍过许多,除了流行的小程序,目前移动端主流的方式有通过二级目录或二级域名的实现,也可以用CSS自适应的方式实现。当然,如果网站的后台不支持,也可以通过向百度提交移动端转码规则实现,但功能及模板比较单一。下面通过URL了解:

PC端与移动端URL主流方式(静态/伪静态)

PC端:http://www.vi586.com/
移动端URL(1):http://www.vi586.com/m/
移动端URL(2):http://m.vi586.com/

另外还有许多动态URL方式,至于哪种方式比较好,百度官*方表明将一视同仁,那大家就不必追求了,但是要做好必要适配,参考文章《终极讲解移动端适配设置与SEO优化》。

建议大家采用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']);

在上面增加代码

//by7
if(isMobile()){
 $row['templet'] =str_replace('.htm','_m.htm',$row['templet']);
}
//by7

2.列表页/内容页/搜索页/TAG页面处理

打开/plus/list.php,/plus/view.php,/plus/search.php,/plus/tags.php找到

require_once(dirname(__FILE__)."/../include/common.inc.php");

下面增加代码

//by7
if(isMobile()){
 define('DEDEMOB', 'Y');
}
//by7

首页PC模板 index.htm 对应的移动端模板为 index_m.htm,以此类推,PC对应的移动端模板命名方式".htm"前面加"_m",也就是"_m.htm",需要放在同一模板目录下。移动端模板调用的图片、js、CSS等需要调整好路径,以免造成错误。

3.移动端内容页上下文章路径修改

经过上面的修改,DedeCMS移动端和电脑端使用的绝大多数是同一种标签,不需要写function函数替换,但上下页文章的标签还不行,如:

{dede:prenext get='pre'/}
{dede:prenext get='next'/}

这组标签前端出来的是动态路径 view.php?aid=3 ,打开 /include/arc.archives.class.php,找到

if ( defined('DEDEMOB') )
{
    $mlink = 'view.php?aid='.$preRow['id'];
} else {
    $mlink = GetFileUrl($preRow['id'],$preRow['typeid'],$preRow['senddate'],$preRow['title'],$preRow['ismake'],$preRow['arcrank'],
$preRow['namerule'],$preRow['typedir'],$preRow['money'],$preRow['filename'],$preRow['moresite'],$preRow['siteurl'],$preRow['sitepath']);
 }

修改为

$mlink = GetFileUrl($preRow['id'],$preRow['typeid'],$preRow['senddate'],$preRow['title'],$preRow['ismake'],$preRow['arcrank'],
$preRow['namerule'],$preRow['typedir'],$preRow['money'],$preRow['filename'],$preRow['moresite'],$preRow['siteurl'],$preRow['sitepath']);

/m目录可以直接删除了,不会对系统造成任何影响,也不需要对移动端页面里面的URL进行改写。

    扩展阅读

    本文地址:https://www.vi586.com/web/755.html
    版权声明:原创文章,版权归重庆SEO吖七所有,欢迎分享本文,支持原创,转载请保留出处

    赞(64)