做织梦模板时,头部、底部、侧边栏这些公共区域如果每个页面都复制一遍,改一处要改几十个文件。include 标签的作用就是把公共部分抽成独立文件,统一引入。本文讲解 include 的路径写法、与 PHP include 的区别、{style} 变量的使用。
一、include 标签基础语法
{dede:include filename="header.htm"/}
filename 指定要引入的文件名,路径相对于当前模板目录(即 /templets/模板风格/)。
二、路径写法四种形式
1. 同目录直接引入
{dede:include filename="header.htm"/}
<!-- 引入 /templets/当前模板/header.htm -->
2. 子目录引入
{dede:include filename="inc/head.htm"/}
<!-- 引入 /templets/当前模板/inc/head.htm -->
3. 使用 {style} 变量
{dede:include filename="{style}/header.htm"/}
<!-- {style} 会被替换为后台设置的模板目录名 -->
4. 绝对路径引入
{dede:include filename="/templets/default/header.htm"/}
<!-- 跨模板目录引入,常用于公共组件 -->
三、{style} 变量的作用
{style} 是织梦模板系统的核心变量,会被替换为后台"系统基本参数—站点设置—模板默认风格"的值:
// 后台设置:模板默认风格=mytpl
// 模板中写:
{dede:include filename="{style}/header.htm"/}
// 实际解析为:
{dede:include filename="mytpl/header.htm"/}
// 实际引入文件:
/templets/mytpl/header.htm
优势:用 {style} 写路径,切换模板风格时不用改模板里的 include 路径,自动跟随后台设置。
四、include 与 PHP include 的区别
织梦 include:
{dede:include filename="header.htm"/}
- 引入的是 .htm 模板文件
- 引入后仍由织梦模板引擎解析
- 可以使用 {dede:xxx} 标签
- 不能执行 PHP 代码
PHP include:
<?php include('header.php'); ?>
- 引入的是 .php 文件
- 直接执行 PHP 代码
- 不能使用 {dede:xxx} 标签(除非在 PHP 中拼接)
- 适合放纯逻辑代码
不要用 PHP include 引入 .htm:用 PHP include 引入 .htm 文件,文件里的 {dede:field.title/} 等标签不会被解析,会原样输出。引入模板片段必须用织梦 include。
五、典型公共文件拆分
建议把站点拆分为以下公共文件:
/templets/mytpl/ ├─ header.htm 公共头部(含导航、logo、搜索) ├─ footer.htm 公共底部(含友情链接、版权、统计) ├─ sidebar.htm 公共侧边栏 ├─ inc/ │ ├─ hot.htm 热门文章区块 │ ├─ relate.htm 相关文章区块 │ └─ ad.htm 广告位 ├─ index.htm 首页 ├─ list_article.htm 列表页 └─ article_article.htm 内容页
首页调用示例
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>{dede:global.cfg_webname/}</title>
</head>
<body>
{dede:include filename="{style}/header.htm"/}
<main>
<!-- 首页内容 -->
{dede:arclist typeid='1' row='10'}...{/dede:arclist}
</main>
{dede:include filename="{style}/footer.htm"/}
</body>
</html>
六、include 文件中使用标签
被 include 的文件中可以正常使用织梦标签:
<!-- header.htm 内容 -->
<header>
<h1><a href="/">{dede:global.cfg_webname/}</a></h1>
<nav>
{dede:channel type='top' row='8'}
<a href="[field:typeurl/]">[field:typename/]</a>
{/dede:channel}
</nav>
</header>
include 引入后会完整执行其中的标签解析,与直接写在主模板里效果一致。
七、注意事项
路径区分大小写:Linux 服务器严格区分大小写,Header.htm 与 header.htm 是两个文件。Windows 开发环境不区分,上线后会发现"本地正常线上 404",建议统一小写命名。
include 不能嵌套 include:织梦的 include 不支持在被引入的文件中再写 {dede:include}。如需多层嵌套,把内层 include 改为直接写在主模板中,或用 PHP include 配合自定义函数。
修改 include 文件后需重新生成:静态模式下,修改 header.htm 后,所有引用它的页面都需要重新生成才能看到效果。建议改完公共文件后立即"一键更新网站"。
跨目录引用用绝对路径:多套模板共用一个 header 时,用绝对路径 {dede:include filename="/templets/common/header.htm"/},避免每套模板都复制一份。
八、应用建议
合理使用 include 能让织梦模板维护效率提升数倍。建议在模板开发初期就把"头部、底部、侧边栏、广告位、热门区块"这些公共组件拆出来,主模板只保留页面独有的内容。路径统一用 {style} 变量,方便日后切换模板风格。把 include 文件按功能分目录存放(如 inc/ 放小片段、common/ 放跨模板公共件),命名清晰,后期改版时一眼就能找到要改的文件。养成"先拆组件、再写页面"的习惯,模板可维护性会大幅提升。