dede建站如何实现多个首页模板切换?

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

核心思想

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

dede建站如何用多个首页模板
(图片来源网络,侵删)
  1. 手动切换(最简单)
  2. 使用栏目首页(最常用)
  3. 通过代码实现自动/手动切换(最灵活)

手动切换(最直接,但不灵活)

这种方法适合偶尔更换首页,且不希望网站有复杂逻辑的情况。

操作步骤:

  1. 创建多个模板文件 在你的模板目录 /templets/default/ 下,创建多个首页模板文件,

    • index.html (默认首页)
    • index_v2.html (新版首页)
    • index_festival.html (节日首页)
  2. 修改 index.php 登录你的网站FTP或主机管理面板,找到根目录下的 index.php 文件,用文本编辑器打开它,找到类似这样的代码:

    dede建站如何用多个首页模板
    (图片来源网络,侵删)
    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");

  3. 生效 保存 index.php 文件,然后刷新你的网站首页,就会看到新模板的内容了。

优点:

  • 操作极其简单,只需修改一个文件。
  • 无需额外插件,对系统无侵入。

缺点:

  • 非常不灵活:每次更换都需要手动登录FTP修改代码并上传,如果需要定时切换(如节日主题),则完全无法实现。
  • 容易出错:手动修改代码可能导致语法错误。

适用场景: 临时性、非计划性的首页更换。


使用栏目首页(推荐,最常用)

这是DedeCMS官方支持且非常强大的一个功能,可以完美实现“多首页”效果,它的原理是创建一个隐藏的顶级栏目,将其设置为首页,并为其指定独立的模板

操作步骤:

  1. 创建新模板 和方法一一样,先在 /templets/default/ 目录下创建你的新首页模板,index_special.html

  2. 创建一个顶级栏目

    • 登录DedeCMS后台,进入【核心】 -> 【栏目管理】。
    • 点击顶部的【增加顶级栏目】。
    • 栏目名称:填写一个你喜欢的名字,活动首页”。
    • 栏目目录:填写一个英文字母或数字,activity
    • :选择“不使用目录”。
    • 列表模板(关键步骤) 选择你刚刚创建的模板文件,index_special.html
    • 生成文件名:可以留空,系统会自动处理。
    • 其他选项:根据需要设置,比如设置栏目为“隐藏”(这样它就不会在主导航中显示)。
    • 点击【确定】保存。
  3. 将新栏目设置为首页

    • 在【栏目管理】中,找到你刚刚创建的“活动首页”栏目。
    • 在该栏目行的“操作”栏中,点击【设置】。
    • 在弹出的页面中,选择“设为首页”,然后保存。
  4. 清理缓存并测试

    • 进入【系统】 -> 【一键更新网站】
    • 勾选“更新首页”,然后点击“开始更新”。
    • 更新完成后,访问你的网站,首页就会显示 index_special.html 的内容。
  5. 如何切换回默认首页?

    • 再次进入【栏目管理】,找到默认的“主页”栏目(通常ID为1)。
    • 在其“操作”栏中点击【设置】,然后选择“设为首页”即可。

优点:

  • 官方支持,稳定可靠:不会对系统核心文件造成任何修改。
  • 非常灵活:可以创建多个不同的“首页”栏目,随时在后台通过“设为首页”来切换。
  • SEO友好:每个“首页”栏目都有自己独立的URL(如 你的域名/activity/),有利于搜索引擎收录。
  • 内容隔离:可以为不同的首页模板配置不同的内容模型和文章,管理清晰。

缺点:

  • 会多出一个顶级栏目(虽然可以设为隐藏)。
  • 对于只想用一个URL(如 域名.com)切换不同风格的场景,此方法会产生一个额外的路径(如 域名.com/activity/),虽然可以通过301重定向解决,但稍显复杂。

适用场景: 绝大多数需要多首页的场景,特别是不同主题、不同活动的首页。


通过代码实现自动/手动切换(最灵活,适合开发者)

如果你需要根据时间、用户访问来源等条件自动切换首页,或者需要一个更简便的后台切换按钮,可以通过修改 index.php 来实现。

示例1:通过后台参数手动切换

  1. 创建模板 创建 index_a.htmlindex_b.html 等模板文件。

  2. 修改 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();
    ?>
  3. 在后台添加切换按钮

    • 登录后台,进入【系统】 -> 【系统基本参数】 -> 【核心设置】
    • 在“自定义网站设置”区域,点击“增加新变量”。
    • 变量名称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%以上的多首页需求,只有在需要非常复杂的自动化逻辑时,才考虑使用【方法三】。

-- 展开阅读全文 --
头像
c语言switch语言奖金提成
« 上一篇 01-02
织梦导航bootstrap
下一篇 » 01-02

相关文章

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

目录[+]