织梦include引入文件路径写法

做织梦模板时,头部、底部、侧边栏这些公共区域如果每个页面都复制一遍,改一处要改几十个文件。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.htmheader.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/ 放跨模板公共件),命名清晰,后期改版时一眼就能找到要改的文件。养成"先拆组件、再写页面"的习惯,模板可维护性会大幅提升。