核心原理
- 统一的数据源:无论是PC端还是手机端,它们都调用的是同一个数据库中的文章数据。
- 模板分离:为PC和WAP创建两套完全独立的模板文件(
index_pc.htm和index_wap.htm)。 - 智能标签:织梦的
{dede:arclist}等标签是“模板无关”的,它们只负责从数据库中提取数据,而数据的最终呈现样式(HTML结构、CSS样式)则由你所在的模板文件决定。 - 域名绑定:通过服务器配置(如Nginx或Apache),将不同的域名(如
www.yoursite.com和m.yoursite.com)指向网站的同一根目录,并根据用户设备类型或域名来加载不同的模板。
核心标签详解(最常用、最基础)
这是实现同步的基础,理解了这些标签,你就能应对大部分场景。

调用标签 {dede:arclist}
这是调用文章列表最核心、最灵活的标签,你可以在PC模板和WAP模板中使用它,但通过不同的属性和模板代码来控制显示效果。
常用属性:
typeid: 栏目ID,调用指定栏目下的文章。row: 调用文章的数量,len`: 标题长度。infolen: 简介(长度。imgwidth&imgheight: 缩略图宽度和高度(WAP端通常会调小)。channelid: 模型ID,默认为1(文章模型)。flag: 推荐属性,如'c'(推荐),'h'(头条),'p'(图片) 等。limit: 起始位置-结束位置,如limit='1,10'从第1条开始,共10条。
示例:
PC端列表模板 (list_pc.htm)

<ul class="pc-list">
{dede:arclist typeid='1' row='5' titlelen='30' imgwidth='200' imgheight='150'}
<li>
<a href="[field:arcurl/]">
<img src="[field:picname/]" alt="[field:title/]" width="200" height="150">
<h3>[field:title/]</h3>
<p>[field:info/]...</p>
</a>
</li>
{/dede:arclist}
</ul>
WAP端列表模板 (list_wap.htm)
<ul class="wap-list">
{dede:arclist typeid='1' row='5' titlelen='20' imgwidth='100' imgheight='75'}
<li>
<a href="[field:arcurl/]">
<img src="[field:picname/]" alt="[field:title/]" width="100" height="75">
<span>[field:title/]</span>
</a>
</li>
{/dede:arclist}
</ul>
分析: 两个模板都使用了 {dede:arclist} 调用同一个栏目(ID=1)的相同数量(5条)文章,通过设置不同的 titlelen、imgwidth 和 imgheight,以及不同的HTML结构(<h3> vs <span>),最终在PC和WAP端呈现出完全不同的样式。
标签 {dede:field}
页(article_article.htm),这个标签用于显示文章的各个字段,PC和WAP的内容页模板也可以共用这个标签,因为文章的标题、内容、时间等数据是相同的,只是页面布局和CSS不同。
示例:
页通用标签 (article_article.htm)**

<h1>{dede:field.title/}</h1>
<div class="info">
<span>作者:{dede:field.writer/}</span>
<span>时间:{dede:field.pubdate function="MyDate('Y-m-d H:i',@me)"/}</span>
<span>来源:{dede:field.source/}</span>
</div>
<div class="content">
{dede:field.body/}
</div>
这里的 {dede:field.body/} 会调用文章的完整内容,无论PC还是WAP,内容本身是一样的,你只需要在CSS中控制好移动端的字体大小、图片宽度即可。
实现完整的PC与WAP站点(进阶)
如果你想要一个独立的 m.yoursite.com 移动站点,并且内容和PC端完全同步,可以按照以下步骤操作。
第1步:创建移动端模板文件
在你的 /templets/ 目录下,创建一个新的文件夹,default/wap/,然后将PC端的所有模板文件复制一份到 wap 文件夹中,之后,你可以根据需要修改这些 wap 文件夹里的模板,使其适配手机屏幕。
index.htm(首页) ->default/wap/index.htmlist_article.htm(文章列表页) ->default/wap/list_article.htmarticle_article.htm(文章内容页) ->default/wap/article_article.htm- ...等等
第2步:服务器配置(以Nginx为例)
这是最关键的一步,它决定了用户访问哪个域名时加载哪个模板。
假设:
- PC端域名:
www.yoursite.com - 移动端域名:
m.yoursite.com - 网站根目录:
/www/wwwroot/yoursite
在Nginx的配置文件中,添加如下 server 块:
# PC端站点配置
server {
listen 80;
server_name www.yoursite.com yoursite.com; # 主域名和www域名
root /www/wwwroot/yoursite;
index index.php index.html;
# ... 其他常规配置 (伪静态、PHP解析等)
# 关键:设置PC端模板
set $mobile_template '';
if ($http_host ~* "^m\.") {
set $mobile_template '/wap';
}
include dede/cms/rewrite/rewrite.conf; # 织梦伪静态规则
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
# 移动端站点配置
server {
listen 80;
server_name m.yoursite.com; # 移动端域名
root /www/wwwroot/yoursite;
index index.php index.html;
# 关键:强制重定向到移动端模板目录
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
}
# 关键:设置移动端模板
set $mobile_template '/wap';
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
更简单的方案:使用PHP判断
如果不想配置两个Nginx server 块,可以在 index.php 的开头加入判断代码,根据用户设备或域名来动态指定模板目录。
打开 /index.php,在 require_once(dirname(__FILE__)."/include/common.inc.php"); 这行代码之前添加:
<?php
// 根据设备类型或域名切换模板
if (isset($_GET['mobile']) || (isset($_SERVER['HTTP_USER_AGENT']) && preg_match('/(android|ipad|iphone|ipod|blackberry|webos|windows phone)/i', $_SERVER['HTTP_USER_AGENT']))) {
// 如果是移动设备访问,或者URL参数带mobile=1,则使用WAP模板
define('DEDETEMPLATE', '/templets/default/wap');
} else {
// 否则使用PC模板
define('DEDETEMPLATE', '/templets/default');
}
// ... 后面的代码保持不变
require_once(dirname(__FILE__)."/include/common.inc.php");
// ...
注意: 这种方法通常用于“响应式设计”或“同一个域名下自适应”,而不是完全独立的移动子域名。
第3步:织梦后台设置
- 系统 -> 站点设置:
- PC站点:设置主域名
www.yoursite.com。 - 移动站点:设置移动域名
m.yoursite.com。
- PC站点:设置主域名
- 系统 -> 默认模板管理:
- 确保PC端模板目录指向
/templets/default/。 - 如果使用上面的PHP判断方法,无需额外设置,如果使用Nginx方案,织梦会自动加载你指定的模板。
- 确保PC端模板目录指向
使用自定义模型(灵活扩展)
如果你的网站不仅仅是文章,还有产品、案例等复杂内容,使用自定义模型是最佳选择。
- 创建模型:在“核心” -> “内容模型管理”中,创建新的模型,产品模型”。
- 添加字段:在模型管理中,为“产品模型”添加你需要的字段,如“价格”、“规格”、“产品图集”等。
- 生成栏目:创建一个新栏目,并选择这个“产品模型”。
- 调用标签:在模板中,使用
channelid属性来调用特定模型的数据。
示例:调用产品模型
{dede:arclist channelid='2' row='4' titlelen='20'}
<!-- channelid='2' 代表产品模型的ID -->
<li>
<a href="[field:arcurl/]">
<img src="[field:litpic/]" alt="[field:title/]">
<h3>[field:title/]</h3>
<p>价格:¥[field:price/]</p> <!-- 调用自定义的price字段 -->
</a>
</li>
{/dede:arclist}
这个产品列表,你可以同时用在PC端模板和WAP端模板中,只需要调整HTML和CSS即可实现同步。
总结与最佳实践
| 方案 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 基础标签 | 内容简单的网站,PC和WAP使用同一套模板(响应式)。 | 简单、快速,无需额外配置。 | 样式控制不够灵活,代码可能臃肿。 |
| 独立站点 | 需要为移动用户提供专门优化的体验(如 m. 域名)。 |
完全分离,体验最好,利于SEO(移动索引)。 | 配置稍复杂,需要维护两套模板。 |
| 自定义模型 | 内容类型复杂,如商城、案例展示等。 | 极其灵活,功能强大,数据结构清晰。 | 需要一定的学习和配置成本。 |
给新手的建议:
- 先从方案一学起,熟练掌握
{dede:arclist}和{dede:field}的各种属性。 - 如果你的网站内容不复杂,尝试使用响应式设计(一套模板,通过CSS适配不同设备),这是目前的主流趋势。
- 如果确实需要独立的移动站点,再选择方案二,并严格按照步骤操作,特别是服务器配置部分。
- 永远记得:内容和表现是分离的,标签只管“拿数据”,模板只管“怎么显示”,理解了这一点,织梦的同步功能就掌握了精髓。
