DedeCMS 本身并没有一个独立的、名为 "WAP" 的系统或模板系统。 它的 WAP 功能是通过 PC 端模板的移动适配 来实现的。

dedecms wap wml模板
(图片来源网络,侵删)

核心原理是:DedeCMS 会根据用户访问的设备(手机或电脑),自动调用不同目录下的模板文件来生成页面,对于 WAP/WML,通常使用的是 WMLXHTML-MP 这两种移动标记语言。

下面我将从几个方面为你详细解析如何设置和使用 DedeCMS 的 WAP/WML 模板。


核心原理:移动模板目录

DedeCMS 的移动模板存放在一个固定的目录下,这个目录通常位于 /templets/ 目录下。

  • 默认移动模板目录/templets/wap/
  • 模板文件命名:与 PC 端的模板文件名保持一致,PC 端的首页模板是 index.htm,WAP 端的首页模板就应该是 /templets/wap/index.htm

当你通过手机访问网站时,DedeCMS 的核心文件会自动检测到移动设备,并从 templets/wap/ 目录下寻找对应的模板文件来渲染页面。

dedecms wap wml模板
(图片来源网络,侵删)

WAP/WML 模板的基本结构

一个标准的 WML 模板与 PC 端的 HTML 模板结构类似,但其内容、标签和 DOCTYPE 是为移动设备优化的。

WML 模板示例 (index.htm)

这是一个非常基础的 WML 首页模板示例:

<?xml version="1.0" encoding="{dede:global.cfg_soft_lang /}"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="index" title="{dede:global.cfg_webname /}">
<p>
<!-- 这里是页面内容 -->
<a href="{dede:global.cfg_cmsurl /}/">首页</a><br/>
<br/>
{dede:arclist titlelen='30' row='5'}
<a href="[field:arcurl/]">[field:title/]</a><br/>
{/dede:arclist}
<br/>
<a href="{dede:global.cfg_cmsurl /}/plus/list.php?tid=1">栏目一</a><br/>
<a href="{dede:global.cfg_cmsurl /}/plus/list.php?tid=2">栏目二</a><br/>
</p>
</card>
</wml>

代码解析

  • <?xml ... ?>:XML 声明,指定了文档的版本和字符集。{dede:global.cfg_soft_lang /} 会自动调用系统设置的字符集(通常是 gbkutf-8)。
  • <!DOCTYPE ...>:WML 文档类型声明,这是 WML 页面必需的部分,告诉浏览器如何解析文档。
  • <wml>:WML 文档的根元素,所有内容都包含在 <wml></wml> 之间。
  • <card id="index" title="...">:WML 页面中的“卡片”概念,一个 WML 文件可以包含多个 <card>,每个卡片代表一个独立的页面视图。id 是卡片的唯一标识,title 是显示在手机标题栏的名称。
  • <p>:段落标签,用于组织卡片内的文本和链接,在 WML 中,<p> 标签内的内容会自动换行。
  • <a href="...">...</a>:超链接标签,用于跳转到其他页面或卡片。
  • DedeCMS 标签:和 PC 端模板一样,你可以在 WML 模板中使用所有 DedeCMS 的模板标签,如 {dede:global.cfg_webname /}{dede:arclist}{dede:field.title} 等,这些标签会在服务器端被解析成实际的 HTML/WML 内容。

如何创建和配置 WAP 模板

步骤 1:创建 WAP 模板目录

在你的 DedeCMS 安装目录下,找到 templets 文件夹,在里面新建一个名为 wap 的文件夹。

your_dedecms_install/
├── dede/           (后台管理目录)
├── plus/           (功能模块目录)
├── templets/
│   ├── default/    (PC端默认模板)
│   └── wap/        (新建的WAP模板目录)
└── ...

步骤 2:复制和修改模板文件

  1. 复制基础文件:将 PC 端模板目录(如 templets/default/)中的关键文件复制到 templets/wap/ 目录下。

    dedecms wap wml模板
    (图片来源网络,侵删)
    • index.htm (首页)
    • article_article.htm (文章内容页)
    • list_channel.htm (栏目列表页)
    • index.htm (搜索结果页,通常在 plus/ 目录下)
    • head.htm (头部公共模板)
  2. 修改模板内容

    • 修改 DOCTYPE:将所有模板文件的 <!DOCTYPE html><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 等 HTML 声明,替换为 WML 的声明,如上面的示例所示。
    • 修改根标签:将 <html> 标签替换为 <wml>
    • 结构放入 <card><p> 标签中。
    • 简化样式:WML 对 CSS 的支持非常有限(甚至不支持)。强烈建议不要在 WML 模板中使用 <style> 标签或外部 CSS 文件,页面的布局和样式应该通过 WML 标签本身的特性(如换行 <br/>、段落 <p>)来实现,力求简洁。
    • 优化图片:移动端网络速度慢,应尽量使用小尺寸、低分辨率的图片,并可以加上 widthheight 属性以加快渲染速度。<img src="..." width="100" height="80"/>
    • 调整标签:确保所有 DedeCMS 标签在 WML 环境下都能正常工作,通常大部分标签是通用的,但需要注意输出内容的长度,titlelen='30' 限制标题长度,infolen='100' 限制摘要长度。

步骤 3:设置网站默认手机模板

这是最关键的一步,它告诉 DedeCMS 使用哪个目录作为移动模板。

  1. 登录你的 DedeCMS 后台。
  2. 进入【系统】-> 系统基本参数
  3. 在左侧菜单中找到【核心设置】。
  4. 找到 “网站默认手机模板” 这个选项。
  5. 在输入框中填入你的 WAP 模板目录名,即 wap
  6. 点击【保存】。

设置完成后,当移动设备访问你的网站时,DedeCMS 就会自动从 /templets/wap/ 目录加载模板了。


WML vs. XHTML-MP (更现代的选择)

虽然 WML 是 DedeCMS 实现移动端的传统方式,但它已经是一个比较陈旧的技术,现代的智能手机浏览器功能强大,完全可以支持更标准的 XHTML-MP (XHTML for Mobile Profile)。

XHTML-MP 的优势:

  • 更好的兼容性:兼容所有现代手机浏览器。
  • 支持 CSS:可以使用有限的 CSS 来美化页面,实现更灵活的布局。
  • 更标准:基于 XHTML,语法更规范,学习成本更低。

如何创建 XHTML-MP 模板?

过程和 WML 模板几乎一样,只需要修改头部的声明即可。

XHTML-MP 模板头部示例:

<?xml version="1.0" encoding="{dede:global.cfg_soft_lang /}"?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset={dede:global.cfg_soft_lang /}" />{dede:global.cfg_webname /}</title>
<!-- 在这里可以引入一个简化的CSS文件 -->
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<!-- 页面内容,使用HTML标签,但要注意移动端的兼容性 -->
<a href="{dede:global.cfg_cmsurl /}/">首页</a><br/>
<br/>
{dede:arclist titlelen='30' row='5'}
<a href="[field:arcurl/]">[field:title/]</a><br/>
{/dede:arclist}
</body>
</html>

使用 XHTML-MP 的建议:

  1. templets/wap/ 目录下创建一个 style.css 文件,编写一些简单的样式。
  2. 在模板中使用 <div><span> 等 HTML 标签来构建页面结构,而不是 WML 的 <card>
  3. 同样,在后台设置“网站默认手机模板”为 wap

重要注意事项和常见问题

  1. 字符集问题:确保 WAP 模板的字符集(encodingcharset)与 DedeCMS 系统设置的一致,通常是 utf-8,以避免乱码。
  2. URL 自动适配:DedeCMS 的文章列表页和内容页链接(如 /plus/list.php/plus/view.php)是自动适配的,会根据设备类型返回 WML 或 HTML 页面,你不需要修改这些 PHP 文件。
  3. 不要过度设计:WAP/XHTML-MP 的核心是“内容优先,简洁至上”,避免使用复杂的 JavaScript、Flash 和过多的图片,这会严重影响加载速度和用户体验。
  4. 测试:WAP 模板必须在真实的手机或手机模拟器上进行测试,可以使用 Chrome 浏览器的“设备模式”(F12 -> Toggle Device Toolbar)来模拟不同手机进行预览和调试。
特性 WML XHTML-MP
标准 WML 1.1 XHTML Mobile 1.0
根标签 <wml> <html>
页面单位 <card> <div>
样式支持 极差或不支持 有限的 CSS
推荐度 旧项目兼容 强烈推荐
实现方式 templets/wap/ 目录下创建 .htm 文件,修改 DOCTYPE 和标签,并在后台设置模板目录为 wap

为 DedeCMS 创建 WAP/WML 模板的核心就是 “另存一份”:在 templets/wap/ 目录下创建一套独立的、为移动设备优化的模板文件,并通过后台设置激活它,虽然 WML 是传统方式,但推荐使用更现代的 XHTML-MP 来获得更好的兼容性和可控性。