核心思想
DedeCMS本身默认只调用一个首页模板文件 index.php,要实现多个首页,核心思路就是改变 index.php 文件所指向的模板内容,主要有以下三种实现方式:

- 手动切换(最简单)
- 使用栏目首页(最常用)
- 通过代码实现自动/手动切换(最灵活)
手动切换(最直接,但不灵活)
这种方法适合偶尔更换首页,且不希望网站有复杂逻辑的情况。
操作步骤:
-
创建多个模板文件 在你的模板目录
/templets/default/下,创建多个首页模板文件,index.html(默认首页)index_v2.html(新版首页)index_festival.html(节日首页)
-
修改
index.php登录你的网站FTP或主机管理面板,找到根目录下的index.php文件,用文本编辑器打开它,找到类似这样的代码:
(图片来源网络,侵删)require_once (dirname(__FILE__) . "/include/common.inc.php"); require_once DEDEINC."/arc.partview.class.php"; $GLOBALS['cfg_templets_dir'] = $cfg_templets_dir; $pv = new PartView(); $pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/index.htm"); $pv->Display();
关键在于这一行:
$pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/index.htm");你只需要修改这里的模板文件名即可,想切换到
index_v2.html,就将其改为:$pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/index_v2.html"); -
生效 保存
index.php文件,然后刷新你的网站首页,就会看到新模板的内容了。
优点:
- 操作极其简单,只需修改一个文件。
- 无需额外插件,对系统无侵入。
缺点:
- 非常不灵活:每次更换都需要手动登录FTP修改代码并上传,如果需要定时切换(如节日主题),则完全无法实现。
- 容易出错:手动修改代码可能导致语法错误。
适用场景: 临时性、非计划性的首页更换。
使用栏目首页(推荐,最常用)
这是DedeCMS官方支持且非常强大的一个功能,可以完美实现“多首页”效果,它的原理是创建一个隐藏的顶级栏目,将其设置为首页,并为其指定独立的模板。
操作步骤:
-
创建新模板 和方法一一样,先在
/templets/default/目录下创建你的新首页模板,index_special.html。 -
创建一个顶级栏目
- 登录DedeCMS后台,进入【核心】 -> 【栏目管理】。
- 点击顶部的【增加顶级栏目】。
- 栏目名称:填写一个你喜欢的名字,活动首页”。
- 栏目目录:填写一个英文字母或数字,
activity。 - :选择“不使用目录”。
- 列表模板:(关键步骤) 选择你刚刚创建的模板文件,
index_special.html。 - 生成文件名:可以留空,系统会自动处理。
- 其他选项:根据需要设置,比如设置栏目为“隐藏”(这样它就不会在主导航中显示)。
- 点击【确定】保存。
-
将新栏目设置为首页
- 在【栏目管理】中,找到你刚刚创建的“活动首页”栏目。
- 在该栏目行的“操作”栏中,点击【设置】。
- 在弹出的页面中,选择“设为首页”,然后保存。
-
清理缓存并测试
- 进入【系统】 -> 【一键更新网站】。
- 勾选“更新首页”,然后点击“开始更新”。
- 更新完成后,访问你的网站,首页就会显示
index_special.html的内容。
-
如何切换回默认首页?
- 再次进入【栏目管理】,找到默认的“主页”栏目(通常ID为1)。
- 在其“操作”栏中点击【设置】,然后选择“设为首页”即可。
优点:
- 官方支持,稳定可靠:不会对系统核心文件造成任何修改。
- 非常灵活:可以创建多个不同的“首页”栏目,随时在后台通过“设为首页”来切换。
- SEO友好:每个“首页”栏目都有自己独立的URL(如
你的域名/activity/),有利于搜索引擎收录。 - 内容隔离:可以为不同的首页模板配置不同的内容模型和文章,管理清晰。
缺点:
- 会多出一个顶级栏目(虽然可以设为隐藏)。
- 对于只想用一个URL(如
域名.com)切换不同风格的场景,此方法会产生一个额外的路径(如域名.com/activity/),虽然可以通过301重定向解决,但稍显复杂。
适用场景: 绝大多数需要多首页的场景,特别是不同主题、不同活动的首页。
通过代码实现自动/手动切换(最灵活,适合开发者)
如果你需要根据时间、用户访问来源等条件自动切换首页,或者需要一个更简便的后台切换按钮,可以通过修改 index.php 来实现。
示例1:通过后台参数手动切换
-
创建模板 创建
index_a.html和index_b.html等模板文件。 -
修改
index.php修改index.php文件,让它根据一个系统参数来决定加载哪个模板。<?php require_once (dirname(__FILE__) . "/include/common.inc.php"); require_once DEDEINC."/arc.partview.class.php"; $GLOBALS['cfg_templets_dir'] = $cfg_templets_dir; // 获取系统参数,我们命名为 'home_theme' $home_theme = $dsql->GetOne("SELECT value FROM `dede_sysconfig` WHERE varname='home_theme'"); // 如果参数不存在或为空,则使用默认模板 if(empty($home_theme['value'])){ $templet = 'index.htm'; } else { // 根据参数值加载不同模板 switch($home_theme['value']) { case 'version_a': $templet = 'index_a.html'; break; case 'version_b': $templet = 'index_b.html'; break; case 'festival': $templet = 'index_festival.html'; break; default: $templet = 'index.htm'; break; } } $pv = new PartView(); $pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/" . $templet); $pv->Display(); ?> -
在后台添加切换按钮
- 登录后台,进入【系统】 -> 【系统基本参数】 -> 【核心设置】。
- 在“自定义网站设置”区域,点击“增加新变量”。
- 变量名称:
home_theme(必须和代码中的$home_theme一致) - 变量类型:
选择项(radio) - 参数说明:
首页主题 - 变量值:
默认首页,index.htm 版本A,index_a.html 版本B,index_b.html 节日版,index_festival.html - 保存设置。
你就可以在后台【系统基本参数】里直接选择要使用的首页主题,无需再修改代码。
示例2:根据时间自动切换(如节日主题)
修改 index.php 文件,加入时间判断逻辑:
<?php
// ... 前面的代码不变 ...
$templet = 'index.htm'; // 默认模板
// 判断是否在国庆节期间 (10月1日-10月7日)
if(date('m-d') >= '10-01' && date('m-d') <= '10-07'){
$templet = 'index_national_day.html';
}
// 判断是否在春节期间 (示例:正月初一至初三)
// $currentDate = strtotime(date('Y-m-d'));
// $springFestival = strtotime(date('Y').'-02-01'); // 注意每年春节日期不同,需要动态计算
// if($currentDate >= $springFestival && $currentDate <= strtotime('+2 days', $springFestival)){
// $templet = 'index_spring_festival.html';
// }
$pv = new PartView();
$pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/" . $templet);
$pv->Display();
?>
优点:
- 自动化程度高:可以实现定时、定条件的自动切换,无需人工干预。
- 高度定制化:可以结合任何PHP逻辑,实现非常复杂的切换规则。
- 后台管理方便:通过后台参数即可控制,无需登录FTP。
缺点:
- 需要一定的PHP编程能力。
- 修改了核心文件
index.php,升级DedeCMS时需要小心处理,避免代码被覆盖。
适用场景: 需要自动化、智能化切换首页的高级用户或开发者。
总结与推荐
| 方法 | 优点 | 缺点 | 推荐指数 | 适用人群 |
|---|---|---|---|---|
| 手动切换 | 简单直接 | 不灵活,易出错 | ★☆☆☆☆ | 临时、一次性更换 |
| 栏目首页 | 稳定、灵活、官方支持 | 会产生额外URL,需隐藏栏目 | ★★★★★ | 所有用户,尤其是新手和常规用户 |
| 代码切换 | 高度灵活,可自动化 | 需要开发能力,修改核心文件 | ★★★★☆ | 开发者、有特殊需求的进阶用户 |
对于绝大多数用户,我强烈推荐使用【方法二:使用栏目首页】,它是最规范、最安全、最易于管理和维护的解决方案,能够满足90%以上的多首页需求,只有在需要非常复杂的自动化逻辑时,才考虑使用【方法三】。
