DedeCMS 手机模板制作全攻略
本教程将分为以下几个部分:

- 准备工作:了解 Dedecms 手机模板机制
- 核心步骤:制作一个简单的手机首页
- 进阶技巧:列表页、内容页与通用页的制作
- 常见问题与解决方案
- 最佳实践与优化建议
第一部分:准备工作
在开始之前,你需要了解 Dedecms 是如何处理移动端请求的,这至关重要,否则你的模板可能无法生效。
了解手机模板的工作原理
DedeCMS 的手机模板机制主要依赖于 m 参数。
- 触发方式:当用户访问网站时,URL 中包含
?m=1或/m/,DedeCMS 就会判断这是一个移动端请求。 - 模板加载:系统会自动加载
/templets/目录下的mobile文件夹里的模板文件。 - 默认首页:移动端默认会加载
mobile文件夹下的index.htm。 - PC端与移动端共存:PC 端的模板仍然存放在
/templets/目录下的default或你自定义的文件夹里,两者互不干扰。
你所有的手机模板文件,都必须放在 /templets/mobile/ 这个目录下。
准备工具和环境
- 代码编辑器:强烈推荐使用 VS Code、Sublime Text 或 Dreamweaver,它们对 HTML、CSS、PHP 代码有很好的高亮和提示功能。
- FTP/SFTP 工具:用于将你制作的模板文件上传到服务器,FileZilla。
- 浏览器开发者工具:用于调试你的模板,特别是 Chrome DevTools 的“设备模拟”功能,可以让你在不连接手机的情况下预览效果。
- 一个已安装好的 Dedecms 网站:确保你的网站可以正常运行。
第二部分:核心步骤 - 制作一个简单的手机首页
我们将从零开始,创建一个响应式的手机首页。

步骤 1:创建移动端目录和文件
通过 FTP 登录你的服务器,进入 /templets/ 目录,创建一个名为 mobile 的新文件夹。
在 /templets/mobile/ 文件夹中,创建以下文件:
index.htm(移动端首页)style.css(移动端样式表)head.htm(头部公共模板)footer.htm(底部公共模板)
目录结构示例:
/你的网站根目录/
├── /templets/
│ ├── /default/ (PC端模板)
│ │ ├── index.htm
│ │ └── ...
│ └── /mobile/ (移动端模板) <-- 我们在这里工作
│ ├── index.htm
│ ├── style.css
│ ├── head.htm
│ └── footer.htm
└── ...
步骤 2:制作 head.htm 公共头部
head.htm 通常包含网站标题、关键词、描述、CSS/JS 引用等。

/templets/mobile/head.htm
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">{dede:global.cfg_webname/}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="format-detection" content="telephone=no">
<link rel="stylesheet" href="{dede:global.cfg_templets_skin/}/style.css">
{dede:global.cfg_basehost/}
</head>
<body>
代码解析:
viewport:移动端适配的核心,告诉浏览器如何渲染页面。apple-mobile-web-app-*:用于优化在苹果设备上的显示效果。{dede:global.cfg_templets_skin/}:这是一个系统变量,会自动解析为/templets/mobile/路径,这样你的 CSS 路径就不会出错。
步骤 3:制作 footer.htm 公共底部
footer.htm 通常包含版权信息、底部导航栏等。
/templets/mobile/footer.htm
<div class="footer">
<a href="{dede:global.cfg_cmsurl/}/">首页</a>
<a href="/list.php?tid=1">分类一</a>
<a href="/list.php?tid=2">分类二</a>
<a href="/plus/feedback.php">联系我们</a>
</div>
</body>
</html>
步骤 4:制作 style.css 样式表
手机端的样式要简洁、直观。
/templets/mobile/style.css
/* 重置样式 */
* { margin: 0; padding: 0; box-sizing: border-box; }
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: 16px; line-height: 1.5; color: #333; background: #f4f4f4; }
容器 */
.content { padding: 10px; }
/* 文章列表 */
.article-list { list-style: none; }
.article-list li { background: #fff; margin-bottom: 10px; padding: 15px; border-radius: 5px; box-shadow: 0 1px 3px rgba(0,0,0,0.1); }
.article-list li a { text-decoration: none; color: #333; display: block; }
.article-list li h3 { font-size: 18px; margin-bottom: 8px; font-weight: normal; }
.article-list li .summary { color: #666; font-size: 14px; margin-bottom: 5px; }
.article-list li .meta { color: #999; font-size: 12px; }
/* 底部导航 */
.footer { position: fixed; bottom: 0; left: 0; right: 0; background: #333; display: flex; justify-content: space-around; padding: 10px 0; z-index: 100; }
.footer a { color: #fff; text-decoration: none; font-size: 14px; text-align: center; }
步骤 5:制作 index.htm 首页
这是核心文件,它将调用我们制作的头部和底部,并使用 Dedecms 的标签来获取文章列表。
/templets/mobile/index.htm
{dede:include filename="head.htm"/}
<div class="content">
<h1>欢迎来到 {dede:global.cfg_webname/}</h1>
<ul class="article-list">
{dede:arclist titlelen='40' row='10'}
<li>
<a href="[field:arcurl/]">
<h3>[field:title/]</h3>
<p class="summary">[field:description function='cn_substr(@me, 80)'/]...</p>
<div class="meta">发布时间:[field:pubdate function="MyDate('Y-m-d', @me)'/] 点击:[field:click/]</div>
</a>
</li>
{/dede:arclist}
</ul>
</div>
{dede:include filename="footer.htm"/}
代码解析:
{dede:include filename="head.htm"/}:引入头部模板。{dede:arclist ...}:DedeCMS 最核心的列表标签。titlelen='40'长度限制为40个字符。row='10':获取10篇文章。[field:arcurl/]:文章链接。[field:title/]。[field:description function='cn_substr(@me, 80)'/]:并截取前80个字符。[field:pubdate function="MyDate('Y-m-d', @me)"/]:发布日期,并格式化为年-月-日。[field:click/]:文章点击量。
步骤 6:上传与测试
- 将你制作好的
mobile文件夹(包含里面的所有文件)通过 FTP 上传到服务器的/templets/目录下。 - 在浏览器中访问你的网站,并在 URL 后面加上
?m=1。http://www.yourdomain.com/index.php?m=1
- 如果一切正常,你应该能看到你制作的手机版首页了!
第三部分:进阶技巧
制作列表页 (list.htm)
列表页和首页非常相似,只是它通过 URL 中的 tid 参数来指定要显示哪个分类的文章。
- 在
/templets/mobile/下创建list.htm。 - 复制
index.htm的内容到list.htm。 - 修改
{dede:arclist}标签,增加typeid='GetTopid(@me)'或直接使用{dede:list}
/templets/mobile/list.htm 内容示例:
{dede:include filename="head.htm"/}
<div class="content">
<h1>{dede:field.title/}</h1>
<ul class="article-list">
{dede:list pagesize='10'}
<li>
<a href="[field:arcurl/]">
<h3>[field:title/]</h3>
<p class="summary">[field:description function='cn_substr(@me, 80)'/]...</p>
<div class="meta">发布时间:[field:pubdate function="MyDate('Y-m-d', @me)'/] 点击:[field:click/]</div>
</a>
</li>
{/dede:list}
</ul>
<!-- 分页 -->
<div class="page">
{dede:pagelist listsize='5' listitem='info,index,end,pre,next,pageno'}
</div>
</div>
{dede:include filename="footer.htm"/}
访问方式:http://www.yourdomain.com/list.php?tid=分类ID&m=1
页 (article_article.htm)
页用于显示单篇文章的详细内容。
- 在
/templets/mobile/下创建article_article.htm。 - 使用
{dede:field}标签来获取文章的各个字段。
/templets/mobile/article_article.htm 内容示例:
{dede:include filename="head.htm"/}
<div class="content">
<h1>{dede:field.title/}</h1>
<div class="meta">
发布时间:{dede:field.pubdate function="MyDate('Y-m-d H:i', @me)'/'}
作者:{dede:field.writer/}
点击:{dede:field.click/}
</div>
<hr>
<div class="article-content">
{dede:field.body/}
</div>
<div class="share">
<!-- 这里可以放分享按钮 -->
</div>
</div>
{dede:include filename="footer.htm"/}
访问方式:http://www.yourdomain.com/a/文章目录ID/文章ID.html?m=1
*制作通用页面 (`page_.htm`)**
对于“关于我们”、“联系我们”等单页面,DedeCMS 会使用 page_*.htm 模板。
page_default.htm:默认的通用页面模板。page_about.htm:如果页面标识是about,则优先使用这个模板。
/templets/mobile/page_default.htm 内容示例:
{dede:include filename="head.htm"/}
<div class="content">
{dede:field.content/}
</div>
{dede:include filename="footer.htm"/}
访问方式:http://www.yourdomain.com/plus/view.php?aid=页面ID&m=1
第四部分:常见问题与解决方案
为什么我的手机模板不生效?
- 检查目录:确认模板文件是否在
/templets/mobile/目录下。 - 检查文件名:首页必须是
index.htm,列表页必须是list.htm页必须是article_article.htm。 - 检查URL参数:确认访问时是否带上了
?m=1或/m/。 - 检查缓存:清除浏览器缓存或按
Ctrl + F5强制刷新。 - 检查代码:查看模板文件中是否有 PHP 语法错误,导致模板无法被解析。
如何实现 PC 端自动跳转到移动端?
这是一个很好的用户体验优化,在你的 PC 端模板的 head.htm 中加入一段 JS 代码。
在 /templets/default/head.htm 的 <head> 标签内添加:
<script>
function browserRedirect() {
var sUserAgent = navigator.userAgent.toLowerCase();
var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";
var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";
var bIsMidp = sUserAgent.match(/midp/i) == "midp";
var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb";
var bIsAndroid = sUserAgent.match(/android/i) == "android";
var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce";
var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";
if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) {
window.location.href = "http://www.yourdomain.com/?m=1";
}
}
browserRedirect();
</script>
注意:将 http://www.yourdomain.com/?m=1 替换成你自己的网站地址。
图片在手机上显示过大怎么办?
在 CSS 中为图片添加一个最大宽度限制。
在 style.css 中添加:
img {
max-width: 100%;
height: auto;
}
这能确保图片永远不会超出其容器的宽度。
第五部分:最佳实践与优化建议
- 使用响应式设计:与其制作两套独立的模板,不如采用一套响应式模板,通过媒体查询 (
@media) 来适配不同屏幕尺寸,这是目前的主流做法。 - 精简模板代码:手机端加载速度至关重要,删除不必要的空格和注释,压缩 CSS 和 JS 文件。
- 使用 CDN 加速:将图片、CSS、JS 等静态资源放到 CDN 上,可以极大提升全球用户的访问速度。
- 优化图片:在上传图片到 Dedecms 后,使用其自带的图片处理功能(如缩略图)生成适合手机端的小尺寸图片。
- 重视用户体验:按钮要足够大,易于点击;导航要清晰明了;字体大小要适中,方便阅读。
- 版本控制:如果你对模板进行多次修改,建议使用 Git 等版本控制工具,或者每次修改前备份一份旧文件,以防出错。
通过以上步骤,你已经可以独立完成一个功能完善的 Dedecms 手机模板了,祝你制作顺利!
