织梦Dede如何实现PC手机内容同步标签?

99ANYc3cd6
预计阅读时长 24 分钟
位置: 首页 DEDE建站 正文

核心原理

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

核心标签详解(最常用、最基础)

这是实现同步的基础,理解了这些标签,你就能应对大部分场景。

织梦dede电脑pc手机wap同步标签
(图片来源网络,侵删)

调用标签 {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)

织梦dede电脑pc手机wap同步标签
(图片来源网络,侵删)
<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条)文章,通过设置不同的 titlelenimgwidthimgheight,以及不同的HTML结构(<h3> vs <span>),最终在PC和WAP端呈现出完全不同的样式。

标签 {dede:field}

页(article_article.htm),这个标签用于显示文章的各个字段,PC和WAP的内容页模板也可以共用这个标签,因为文章的标题、内容、时间等数据是相同的,只是页面布局和CSS不同。

示例: 页通用标签 (article_article.htm)**

织梦dede电脑pc手机wap同步标签
(图片来源网络,侵删)
<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.htm
  • list_article.htm (文章列表页) -> default/wap/list_article.htm
  • article_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步:织梦后台设置

  1. 系统 -> 站点设置
    • PC站点:设置主域名 www.yoursite.com
    • 移动站点:设置移动域名 m.yoursite.com
  2. 系统 -> 默认模板管理
    • 确保PC端模板目录指向 /templets/default/
    • 如果使用上面的PHP判断方法,无需额外设置,如果使用Nginx方案,织梦会自动加载你指定的模板。

使用自定义模型(灵活扩展)

如果你的网站不仅仅是文章,还有产品、案例等复杂内容,使用自定义模型是最佳选择。

  1. 创建模型:在“核心” -> “内容模型管理”中,创建新的模型,产品模型”。
  2. 添加字段:在模型管理中,为“产品模型”添加你需要的字段,如“价格”、“规格”、“产品图集”等。
  3. 生成栏目:创建一个新栏目,并选择这个“产品模型”。
  4. 调用标签:在模板中,使用 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(移动索引)。 配置稍复杂,需要维护两套模板。
自定义模型 内容类型复杂,如商城、案例展示等。 极其灵活,功能强大,数据结构清晰。 需要一定的学习和配置成本。

给新手的建议:

  1. 先从方案一学起,熟练掌握 {dede:arclist}{dede:field} 的各种属性。
  2. 如果你的网站内容不复杂,尝试使用响应式设计(一套模板,通过CSS适配不同设备),这是目前的主流趋势。
  3. 如果确实需要独立的移动站点,再选择方案二,并严格按照步骤操作,特别是服务器配置部分。
  4. 永远记得:内容和表现是分离的,标签只管“拿数据”,模板只管“怎么显示”,理解了这一点,织梦的同步功能就掌握了精髓。
-- 展开阅读全文 --
头像
dede5.7登录后台为何报错500?
« 上一篇 2025-12-03
谭浩强C语言第三版PDF哪里能找到?
下一篇 » 2025-12-03

相关文章

取消
微信二维码
支付宝二维码

目录[+]