dede include标签如何正确调用?

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

include 标签是什么?

include 标签的作用类似于其他编程语言中的 includerequire 语句,它的主要功能是在当前模板文件中,插入并执行另一个指定的模板文件

dedecms dede include
(图片来源网络,侵删)

通过使用 include,你可以将一个复杂的页面(如首页)拆分成多个独立的、功能单一的模块文件(如头部、导航、侧边栏、底部等),这样做的好处非常明显:

  • 代码复用:像头部、底部、导航栏这些在多个页面都会出现的部分,只需要写一次,然后通过 include 引入到各个页面中。
  • 维护方便:当需要修改头部或底部信息时,只需要修改对应的 *.htm 文件,所有引用了该文件的页面都会自动更新,无需逐个修改。
  • 结构清晰:将大模板拆分成小模块,使得模板文件的结构更加清晰,易于阅读和管理。

include 标签的基本语法

include 标签有两种基本用法:普通引入按条件引入

普通引入(最常用)

这是最简单的形式,直接引入一个文件。

语法:

dedecms dede include
(图片来源网络,侵删)
{dede:include filename="文件路径/文件名.htm" /}
  • filename必需属性,指定要引入的模板文件的路径和名称。
    • 路径是相对于 templets/你的模板目录/ 目录的。
    • 你的模板目录是 defaultfilename="head.htm" 就是指向 templets/default/head.htm 文件。

示例: 假设你的网站模板目录结构如下:

templets/
└── default/
    ├── index.htm          (首页主模板)
    ├── head.htm           (头部文件)
    ├── footer.htm         (底部文件)
    └── article_list.htm   (文章列表页模板)

index.htm 中使用 include 来引入头部和底部:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">{dede:global.cfg_webname/}</title>
</head>
<body>
    <!-- 引入头部文件 -->
    {dede:include filename="head.htm" /}
    <div class="main-content">
        <!-- 这里是首页的主要内容区域 -->
        <h1>欢迎来到我的网站</h1>
        <!-- 其他首页专用代码... -->
    </div>
    <!-- 引入底部文件 -->
    {dede:include filename="footer.htm" /}
</body>
</html>

按条件引入

有时,你可能希望根据不同的条件来引入不同的文件,这时可以使用 if 条件语句结合 include

语法:

dedecms dede include
(图片来源网络,侵删)
{dede:if 条件}
    {dede:include filename="文件路径A/文件A.htm" /}
{else}
    {dede:include filename="文件路径B/文件B.htm" /}
{/dede:if}

示例: 假设你在文章详情页,希望根据文章所属的不同栏目(ID)来显示不同的侧边栏。

<!-- 文章详情页模板 (article_detail.htm) -->
<div class="content">
    <!-- 文章内容... -->
</div>
<div class="sidebar">
    {dede:if field:typeid == '1'}
        {dede:include filename="sidebar/news.htm" /}
    {else if field:typeid == '2'}
        {dede:include filename="sidebar/download.htm" /}
    {else}
        {dede:include filename="sidebar/default.htm" /}
    {/dede:if}
</div>

在这个例子中,如果文章的栏目ID(typeid)是 1,就引入 news.htm;如果是 2,就引入 download.htm;否则就引入 default.htm


include 标签的进阶用法

除了基本的文件引入,include 还可以传递参数,实现更灵活的功能。

传递参数给被引入的文件

你可以在 include 标签中使用 name 属性来传递自定义的变量。

语法:

{dede:include filename="file.htm" name='value' /}

在被引入的 file.htm 中,可以通过 {dede:global.name/} 来获取这个 value

示例: 在首页的头部,你可能想传递一个当前页面的标识('home')给 head.htm,以便让头部高亮对应的导航项。

index.htm 中:

{dede:include filename="head.htm" name='page_type' value='home' /}

或者使用更简洁的 key='value' 语法(DedeCMS 5.7+ 推荐):

{dede:include filename="head.htm" page_type='home' /}

head.htm 中获取参数:

<head>{dede:global.cfg_webname/}</title>
    <script>
        var currentPage = '{dede:global.page_type/}';
        // 可以用 currentPage 变量来做一些JS判断
        if (currentPage == 'home') {
            // 给首页导航添加高亮样式
            document.getElementById('nav-home').className = 'active';
        }
    </script>
</head>

注意:传递的参数在引入的模板中,通过 {dede:global.参数名/} 来获取。


includelib 文件夹中的 *.inc.php 文件

在 Dedecms 的早期版本或官方默认模板中,你可能会看到一种不同的引入方式:

<?php
    require_once(dirname(__FILE__)."/include/config_base.php");
    require_once(DEDEINC."/dedetag.class.php");
    // ... 其他PHP代码
?>

或者在模板文件中看到:

{dede:include filename="head.htm" ismake="yes"/}

这里的 ismake="yes" 是一个特殊属性,它告诉 Dedecms 在解析模板时,不仅要引入 head.htm 的内容,还要执行该文件中可能包含的 PHP 代码。

现代 Dedecms 的推荐做法:

  1. 模板文件(.htm:只包含 HTML 结构和 Dedecms 标签,尽量不写 PHP 代码。
  2. 功能文件(.php:将复杂的 PHP 逻辑写在 include/plus/ 目录下的 .php 文件中(include/func_xxx.php)。
  3. 通过标签调用功能:在模板中通过自定义标签(如 {dede:mytag name='xxx' /})来调用这些 PHP 文件的功能,而不是直接在模板里 require

这样做能更好地实现“逻辑”与“表现”的分离,使模板更纯净、更易于维护。


总结与最佳实践

特性 说明 示例
核心功能 在一个模板文件中插入并执行另一个模板文件。 {dede:include filename="head.htm" /}
路径规则 filename 的路径相对于 templets/当前模板目录/ filename="public/header.htm"
主要优点 代码复用、维护方便、结构清晰。 将头部、底部等通用部分模块化。
条件引入 使用 {dede:if}...{else}...{/dede:if} 根据条件引入不同文件。 根据栏目ID引入不同的侧边栏。
参数传递 使用 key='value' 语法传递自定义变量。 {dede:include filename="head.htm" page='home' /}
参数获取 在引入的模板中通过 {dede:global.key/} 获取参数值。 {dede:global.page/}
最佳实践 将模板(HTML)与逻辑(PHP)分离,使用 .htm 存放结构,.php 存放功能,通过标签调用。 避免在模板中直接写复杂的 PHP 代码。

核心要点: include 的核心就是“拆分”“复用”,把你的网站页面想象成一个乐高模型,include 就是那些标准化的乐高积木块(如车门、轮子),你可以把它们轻松地组合到不同的模型(页面)中去,掌握好 include,是高效使用 Dedecms 进行模板开发的第一步。

-- 展开阅读全文 --
头像
C语言无法编译的原因是什么?
« 上一篇 12-02
织梦dede如何实现PC与手机同步标签?
下一篇 » 12-02

相关文章

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

目录[+]