DedeCMS PC 端与手机端网站数据完全同步教程

实现 PC 和手机端数据同步的核心思想是:“一端发布,两端更新”,当你在 PC 端发布或修改一篇文章时,手机端网站能够自动、实时地获取最新的内容。

dede pc 手机同步教程
(图片来源网络,侵删)

核心原理

DedeCMS 官方提供了一套非常成熟的 “手机门户” 解决方案,其工作原理如下:

  1. 共用数据库:PC 端和手机端网站使用同一个数据库和同一套数据表。
  2. 数据过滤:通过修改模板文件(主要是 article_artlist.htm),让手机端在调用文章列表时,根据特定规则(如文章 ID 范围、栏目 ID 等)来筛选和展示内容。
  3. 数据同步机制:DedeCMS 的核心机制决定了,你在 PC 端后台发布的任何内容(文章、软件、图集等),其数据都会被写入到共享的数据库中,手机端网站通过调用这些数据,自然就实现了同步。

同步的关键不在于数据传输,而在于如何让手机端正确地调用和展示 PC 端的数据


第一步:准备工作

在开始之前,请确保你已经完成以下准备工作:

  1. 服务器环境:一台支持 PHP 和 MySQL 的 Web 服务器。
  2. DedeCMS 程序:下载并安装好 DedeCMS 最新稳定版(推荐 V5.7 或 V5.8),官方下载地址:http://www.dedecms.com/
  3. 域名解析:为你的网站准备两个域名,
    • www.yourdomain.com (PC 端主域名)
    • m.yourdomain.com (手机端域名)
  4. 目录结构:在服务器上规划好目录结构,推荐以下两种方式:
    • 独立目录(推荐)
      • /wwwroot/ (网站根目录)
        • /pc/ (PC 端程序)
        • /m/ (手机端程序)
    • 子目录
      • /wwwroot/ (网站根目录)
        • (PC 端程序)
        • /m/ (手机端程序)

本教程将以 独立目录 为例进行讲解。

dede pc 手机同步教程
(图片来源网络,侵删)

第二步:安装与配置

安装 PC 端网站

将 DedeCMS 程序上传到 /wwwroot/pc/ 目录,然后通过浏览器访问 http://www.yourdomain.com/install/,按照向导完成安装,安装过程中,请务必记住你的数据库信息(数据库名、用户名、密码等)。

安装手机端网站

  • 方法一(官方推荐):

    1. 在 PC 端 DedeCMS 后台,进入 “系统” -> “手机门户”
    2. 点击 “生成手机版”“安装手机版”,系统会自动在 /wwwroot/pc/ 目录下创建一个 /m/ 文件夹,并将手机端程序文件放入其中。
    3. 访问 http://www.yourdomain.com/m/install/,按照向导安装。安装时,请务必使用与 PC 端完全相同的数据库信息!
  • 方法二(手动安装):

    1. 下载 DedeCMS 官方提供的手机版程序包。
    2. 将其解压并上传到 /wwwroot/m/ 目录。
    3. 访问 http://m.yourdomain.com/install/,完成安装,同样使用同一数据库。

绑定域名并配置伪静态

  • 绑定域名

    • 在你的服务器控制面板(如 cPanel、宝塔面板等)中,将 www.yourdomain.com 绑定到 /wwwroot/pc/ 目录。
    • m.yourdomain.com 绑定到 /wwwroot/m/ 目录。
  • 配置伪静态

    • PC 端 (/wwwroot/pc/)

      • 进入 DedeCMS 后台 “系统” -> “系统基本参数” -> “核心设置”
      • 找到 “是否使用伪静态”,选择 “是”
      • 根据你的服务器环境(Apache/Nginx),在后台提供的 “伪静态” 菜单中,选择对应的规则并保存,系统会自动在 /wwwroot/pc/ 目录下生成 .htaccess (Apache) 或 nginx.conf (Nginx) 文件。
    • 手机端 (/wwwroot/m/)

      • 手机端也需要配置伪静态。请务必在 /wwwroot/m/ 目录下也创建一个伪静态文件与 PC 端的规则相同,这是很多新手容易忽略的地方,会导致手机端栏目页、文章页链接失效。

第三步:核心同步配置(关键步骤)

这是实现数据同步的核心,你需要修改手机端的模板文件,让它能正确读取 PC 端的数据。

修改手机端文章列表模板 (article_artlist.htm)

这个文件控制着手机端首页、栏目页的文章列表展示,默认情况下,它可能只调用了一部分数据。

  1. 用 FTP 或服务器文件管理器,打开手机端模板目录:/wwwroot/m/templets/default/
  2. 找到并编辑 article_artlist.htm 文件。
  3. 找到调用文章列表的代码块,通常是 {dede:list}{dede:arclist}
  4. 修改调用逻辑,确保它调用的数据范围与 PC 端一致,PC 端的文章 ID 是连续递增的,而手机端默认可能只调用了一部分,你需要移除或修改限制条件。

示例修改:

假设你发现手机端首页文章列表不全,可以检查 {dede:list} 标签,PC 端首页调用可能是这样的:

{dede:list pagesize='20'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
    </li>
{/dede:list}

手机端的 article_artlist.htm 可能也类似,但如果你发现数据不全,可以尝试给 typeidchannelid 属性赋值,或者检查是否有其他插件或缓存影响了调用。

更常见的修改是:

/wwwroot/m/ 目录下,找到并修改 index.php (首页)、list.php (列表页) 等文件中的数据库查询语句,确保 LIMIT 限制足够大,或者移除不必要的 WHERE 条件,但这需要一定的代码基础。

一个更安全、更推荐的方法是:

直接在手机端后台 “模板” -> “默认模板管理” 中,修改 article_artlist.htm 的内容,使其与 PC 端的列表模板 list_article.htm 保持一致(只保留手机端所需的样式),因为它们调用的是同一套数据,所以只要调用标签正确,数据自然就同步了。

修改文章内容页模板 (article_article.htm)

这个文件用于展示单篇文章的内容。

  1. 打开 /wwwroot/m/templets/default/article_article.htm
  2. 确保文章内容的调用标签 [field:body/] 是正确的。
  3. 重要:PC 端与手机端的图片路径问题
    • 当你在 PC 端编辑器上传图片时,图片路径是相对于 PC 端的(如 /uploads/allimg/...)。
    • 手机端网站访问时,这个路径是有效的,因为它们共享 /uploads/ 目录。
    • 图片路径通常不需要修改,只要上传目录是共享的即可。

清理缓存

完成以上修改后,务必清理所有缓存,否则可能看不到效果。

  • PC 端后台:进入 “系统” -> “系统设置” -> “一键更新缓存”,全部更新。
  • 手机端后台:同样进入缓存管理,更新缓存。
  • 服务器缓存:如果使用了 OPcache、Redis 等服务器级缓存,也需要一并清理。

第四步:测试与验证

  1. 发布一篇文章:在 PC 端后台发布一篇新文章,并选择一个栏目。
  2. PC 端查看:访问 www.yourdomain.com,检查首页和对应栏目是否显示了新文章。
  3. 手机端查看:访问 m.yourdomain.com,检查首页和对应栏目是否也显示了这篇新文章,点击文章链接,能否正常进入文章详情页。
  4. 修改一篇文章:在 PC 端后台修改一篇已发布文章的标题或内容。
  5. 再次检查:刷新手机端网站,确认修改是否已经同步。

第五步:常见问题与解决方案 (FAQ)

Q1: 为什么手机端显示的文章比 PC 端少?

A: 这是最常见的问题,原因通常是手机端的模板调用逻辑有限制,请重点检查 /wwwroot/m/templets/default/ 下的 article_artlist.htmindex.htm 等模板文件中的 {dede:list}{dede:arclist} 标签,确保其 typeidchannelidrowlimit 等参数设置正确,没有遗漏掉某些栏目或文章。

Q2: 手机端的文章链接打不开,404错误?

A: 99% 的原因是 手机端没有配置伪静态,请回到第二步,确保在 /wwwroot/m/ 网站根目录下存在并正确配置了 .htaccess (Apache) 或 nginx.conf (Nginx) 文件。

Q3: 手机端样式错乱,图片显示不出来?

A:

  • 样式问题:检查手机端模板文件中的 CSS 和 HTML 代码,确保它们是为移动端优化的(例如使用响应式设计 meta viewport 标签)。
  • 图片问题:确认图片上传目录 /uploads/ 是 PC 端和手机端共享的,检查文章内容中图片的 <img> 标签,其 src 属性是否为完整路径(如 http://www.yourdomain.com/uploads/...),有时编辑器生成的路径可能有问题,可以在发布文章后,通过“HTML 源码”模式检查一下。

Q4: 同步有延迟,不是实时的?

A: DedeCMS 的数据写入是实时的,但页面显示有缓存,请务必在 PC 端和手机端后台都执行 “更新缓存” 操作,并清理浏览器缓存和服务器缓存。

Q5: 我想只在手机端显示某些内容,PC 端不显示,怎么办?

A: DedeCMS 模板支持判断语句,你可以在模板中使用 {dede:global name='itemindex'/} 或自定义字段来实现,可以在 PC 端模板里加入判断:

{dede:field name='typeid' function='if(@me==5) @me="";else @me;'/}

或者在发布文章时,给文章添加一个自定义字段 is_mobile,值为 1,然后在手机端模板里判断:

{dede:arclist typeid='1' channelid='1'}
    {dede:field name='is_mobile' runphp='yes'}
        if(@me == 1) {
            @me = "<a href='[field:arcurl/]'>[field:title/]</a>";
        } else {
            @me = "";
        }
    {/dede:field}
{/dede:arclist}

这可以实现“按需同步”,但需要更高级的模板开发技巧。


通过以上步骤,你应该可以成功搭建起一个与 PC 端数据完全同步的 DedeCMS 手机网站,记住核心要点:

  1. 同一数据库:PC 和手机端必须共用数据库。
  2. 独立目录与域名:程序分开放,域名分别绑定。
  3. 伪静态配置两端都要配,否则链接失效。
  4. 模板修改:调整手机端模板的调用逻辑,确保数据读取完整。
  5. 缓存清理:修改后务必清理缓存。

如果遇到问题,首先检查伪静态和模板调用,这两点是绝大多数问题的根源。