这与其他很多PHP程序(如WordPress的 index.php)的原理类似,但织梦有其独特的处理流程,下面我为您详细解释一下 index.php 在织梦模板系统中的核心作用和工作原理。

index.php 的核心作用:入口文件
index.php 是整个网站的前台入口文件,当用户访问您的网站域名(www.yourdomain.com)时,服务器就会默认请求并执行这个文件。
它的主要任务不是直接显示网页内容,而是作为一个总调度,根据请求参数来决定最终要调用哪个模板文件来生成并输出页面。
index.php 的工作流程详解
我们可以通过查看织梦默认的 index.php 文件代码来理解其流程:
<?php
// 防止直接访问此文件
define('DEDEINC', dirname(__FILE__).'/include');
require_once(DEDEINC.'/arc.partview.class.php');
// 获取请求的模板文件名,默认为index.htm
$templet = isset($_GET['templet']) ? trim($_GET['templet']) : 'index';
// 实例化一个视图类
$pv = new PartView();
// 设置当前模板的目录,通常是根目录下的 /templets/default/
$pv->SetTemplet($cfg_basedir.$cfg_templets_dir.'/'.$templet.'.htm');
// 显示页面
$pv->Display();
?>
从这个简化的代码中,我们可以看出以下几个关键步骤:

引入核心文件
require_once(DEDEINC.'/arc.partview.class.php');
这行代码引入了织梦的核心类文件 PartView.class.php,这个类负责所有的模板解析和页面生成工作。
获取模板标识
$templet = isset($_GET['templet']) ? trim($_GET['templet']) : 'index';
这是最关键的一步,它会检查URL中是否有一个名为 templet 的参数。
- 如果没有
templet参数(比如直接访问www.yourdomain.com/),$templet变量的值就默认为'index'。 - 如果有
templet参数(比如访问www.yourdomain.com/?templet=list_article),$templet变量的值就变成了'list_article'。
实例化并设置模板
$pv = new PartView(); $pv->SetTemplet($cfg_basedir.$cfg_templets_dir.'/'.$templet.'.htm');
这里创建了一个 PartView 对象,并调用它的 SetTemplet 方法,将上一步获取的模板标识与模板路径(如 /templets/default/index.htm)拼接起来,告诉系统要使用哪个模板文件。

输出页面
$pv->Display();
这个方法会执行最终的模板解析工作,它会读取 .htm 模板文件,将里面的织梦标签(如 {dede:arclist})替换成从数据库中查询到的实际内容,最后将生成的HTML代码输出到浏览器。
如何通过 index.php 访问不同页面?
正是因为 index.php 的这个设计,织梦的前台所有页面(首页、列表页、内容页等)都可以通过 index.php 这个统一的入口来访问,实现了URL的伪静态或美观化。
-
访问首页
- URL:
www.yourdomain.com/ - 内部实际调用:
index.php?templet=index - 加载模板:
/templets/default/index.htm
- URL:
-
访问文章列表页
- URL:
www.yourdomain.com/list-1-1.html(伪静态) - 内部实际调用:
index.php?tid=1&templist=list - 加载模板:
/templets/default/list_article.htm(根据栏目ID和模板设置)
- URL:
-
访问文章内容页
- URL:
www.yourdomain.com/a/1/1.html(伪静态) - 内部实际调用:
index.php?aid=1 - 加载模板:
/templets/default/article_article.htm(根据文章ID和模板设置)
- URL:
这些URL重写规则通常存储在服务器的 .htaccess 文件中(Apache环境)或 web.config 文件中(IIS环境),它们会将用户友好的URL重写为 index.php 加上相应参数的形式。
实际应用中的修改
如果您想修改默认的首页模板,通常有以下几种方法:
-
后台设置(推荐):
- 登录织梦后台。
- 进入【系统】-> 【系统基本参数】 -> 【核心设置】。
- 找到“主页链接模板”选项,默认值是
index.htm,您可以在这里修改为您想要的主页模板文件名,home.htm。 - 修改后,系统在调用首页时就会去加载
/templets/default/home.htm这个文件。
-
直接修改
index.php(不推荐,除非有特殊需求):- 您可以编辑根目录下的
index.php文件。 - 将
$templet = ...那一行硬编码为您想要的模板,$templet = 'home'; - 这样,无论有没有
templet参数,首页都会强制加载home.htm。
- 您可以编辑根目录下的
index.php 是织梦CMS前台的总开关,它本身不包含页面内容,而是通过分析URL参数来决定调用哪个模板文件(如 index.htm, list.htm 等),然后由核心类来解析模板并生成最终的网页,这种设计使得织梦的URL管理和模板系统非常灵活和强大。
