核心概念:DEDE 的模板路径机制
在修改之前,你需要理解 DEDE 是如何查找模板的。
- 默认路径:DEDE 默认会去
/templets/default/目录下查找模板文件,这里的default就是默认模板目录名。 - 动态路径:通过修改配置文件,你可以告诉 DEDE 你的模板存放在哪里。
- 模板文件:通常是
.htm后缀的文件,里面包含了 HTML 代码和 DEDE 的模板标签(如{dede:arclist})。
修改模板路径,本质上就是改变 DEDE 寻找这些 .htm 文件的根目录。
后台设置 - 最简单、最安全的方法
这是官方推荐且最安全的方法,适用于创建一个新的主题模板。
适用场景:你想安装一个新的模板主题,并让它成为当前站点使用的模板。
操作步骤:
-
上传新模板:
- 将你的新模板文件夹(命名为
mytheme)通过 FTP 或主机面板上传到服务器的/templets/目录下。 - 你的目录结构应该是:
/templets/mytheme/
- 将你的新模板文件夹(命名为
-
登录 DEDE 后台:
使用管理员账号登录你的 DEDE 后台。
-
进入模板设置:
- 在左侧菜单栏中找到并点击 【系统】 -> 【系统基本参数】。
-
修改模板路径:
- 在“系统基本参数”页面,点击右上角的 【核心设置】 标签页。
- 找到 “模板默认目录” 这一项。
- 默认值是
default,现在将其修改为你的新模板目录名,mytheme。 - 点击 【保存】 按钮。
-
验证效果:
- 清空浏览器缓存,或者按
Ctrl + F5强制刷新。 - 访问你的网站首页,你应该能看到新模板已经生效。
- 清空浏览器缓存,或者按
优点:
- 操作简单,无需修改核心文件。
- 安全,官方支持,升级 DEDE 时不会被覆盖。
缺点:
- 一次只能设置一个“默认”模板路径,如果需要多个主题切换,需要配合其他方法。
修改 config.php 文件 - 适用于程序与模板分离
当你想把模板文件放到网站根目录之外,或者一个完全独立的目录时(D:\mydede_templates),就需要修改核心配置文件。
适用场景:
- 将模板与网站程序完全分离,便于管理和备份。
- 多个站点共享同一套模板。
操作步骤:
-
定位配置文件:
- 通过 FTP 连接到你的服务器,找到 DEDE 的核心配置文件:
/include/config.php。
- 通过 FTP 连接到你的服务器,找到 DEDE 的核心配置文件:
-
找到模板路径配置项:
- 打开
config.php文件,找到$cfg_templet_dir这一行。 - 代码大概是这样的:
$cfg_templet_dir = $cfg_cmspath.'/templets';
- 打开
-
修改路径值:
- 场景 A:修改为
/templets下的子目录- 如果你只是想切换到
mytheme目录,可以修改为:$cfg_templet_dir = $cfg_cmspath.'/templets/mytheme';
- 如果你只是想切换到
- 场景 B:修改为网站根目录外的绝对路径(高级用法)
- 假设你想把模板放在
/home/user/mywebsite_templates目录下,可以修改为:// 使用绝对路径 $cfg_templet_dir = '/home/user/mywebsite_templates';
- 注意:使用绝对路径时,请确保 Web 服务器(如 Apache/Nginx)对该目录有读取权限。
- 假设你想把模板放在
- 场景 A:修改为
-
保存文件并上传:
- 保存修改后的
config.php文件,并重新上传到服务器覆盖原文件。
- 保存修改后的
-
验证效果:
清空网站缓存(后台【系统】->【一键更新缓存】),然后刷新网站查看效果。
优点:
- 灵活性极高,可以将模板放在任何服务器有权限访问的目录。
- 实现了程序与模板的完全分离。
缺点:
- 修改了核心文件,升级 DEDE 时需要重新修改。
- 如果路径设置错误,网站将无法显示任何模板(白屏)。
动态指定模板路径 - 适用于特定页面或模块
你可能只想让某一个栏目、某一篇文档或者某一个模块使用不同的模板,而不是整个网站,这时可以在模板或标签中动态指定路径。
适用场景:
- 单个页面使用特殊模板(例如活动页、落地页)。
- 不同栏目使用不同风格的模板。
操作步骤:
-
在模板标签中使用
typeid和templet属性:{dede:arclist}等列表标签,以及{dede:channel}等频道标签,都支持templet属性来指定模板文件。- 示例:在首页调用某个栏目的文章,并使用该栏目专用的列表模板。
{dede:arclist typeid='3' titlelen='30' row='10' templets='list_special.htm'} <li><a href="[field:arcurl/]">[field:title/]</a></li> {/dede:arclist} typeid='3':指定调用 ID 为 3 的栏目。templets='list_special.htm':告诉 DEDE 不要去默认目录找,而是直接使用list_special.htm这个文件,DEDE 会在当前默认模板目录下寻找这个文件。
-
在 PHP 代码中指定:
- 如果你自定义了 PHP 文件,可以在代码中临时覆盖模板路径。
- 在调用
GetTemplets()函数之前,设置一个全局变量$cfg_df_style。 - 示例:
// 在你的 PHP 文件中 $cfg_df_style = 'another_theme'; // 切换到 another_theme 目录 $tplfile = $cfg_templet_dir . '/'. $cfg_df_style .'/article_article.htm';
// 或者直接使用 GetTemplets 函数 $tpl = $dtp->GetTemplets('article_special.htm'); // 在默认目录下查找
优点:
- 精准控制,非常灵活。
- 不影响网站其他部分的模板。
缺点:
- 需要对 DEDE 标签和 PHP 代码有一定了解。
- 容易造成模板路径混乱,不推荐新手在全局使用。
总结与建议
| 方法 | 适用场景 | 优点 | 缺点 | 推荐指数 |
|---|---|---|---|---|
| 后台设置 | 安装新主题、日常切换 | 简单、安全、官方支持 | 一次只能一个主题 | ★★★★★ |
修改 config.php |
程序与模板分离、多站共享 | 灵活性极高、彻底分离 | 修改核心文件、有风险 | ★★★☆☆ |
| 动态指定 | 单页面/单模块特殊模板 | 精准控制、不影响全局 | 需要技术基础、易混乱 | ★★★★☆ |
给新手的建议:
- 优先使用【方法一:后台设置】,这是最标准、最不容易出错的方式。
- 如果需要管理多个主题,可以考虑使用 DEDE 的多模板功能插件,或者结合【方法一】和【方法三】来实现,通过后台设置一个默认主题,然后在特定页面用【方法三】调用另一个主题的模板。
重要提醒: 在进行任何文件修改之前,务必备份你的网站文件和数据库!这样即使修改出错,也能快速恢复。
