织梦include里面的文件夹功能

99ANYc3cd6
预计阅读时长 16 分钟
位置: 首页 织梦建站 正文

公共代码的模块化管理

include 文件夹的核心功能是存放和调用公共代码片段,实现网站代码的模块化和复用。

织梦include里面的文件夹功能
(图片来源网络,侵删)

想象一下,如果你的网站有10个页面,每个页面都需要一个相同的页头(Header)、页脚(Footer)和导航栏,如果没有 include 文件夹,你需要在10个页面的HTML代码里,把页头、页脚的代码完整地复制粘贴一遍。

这样做有两个巨大的问题:

  1. 维护困难:当需要修改页头版权信息或页脚联系方式时,你必须打开并修改所有10个页面,非常容易遗漏或出错。
  2. 代码冗余:网站会包含大量重复的代码,增加了文件体积,不利于SEO和后期维护。

include 文件夹就是为了解决这个问题而生的,它把页头、页脚、侧边栏等这些公共部分独立成单独的文件,然后在需要的地方通过特定的PHP代码“引用”或“包含”进来。

为什么使用 include 文件夹?(优点)

  1. 代码复用:一份公共代码,可在网站多个页面甚至整个站点调用,极大减少了重复劳动。
  2. 维护高效:修改公共部分(如页脚)时,只需修改 include 文件夹中的对应文件,所有引用了该文件的页面都会自动更新。
  3. 结构清晰:将公共代码分离出来,使得模板文件(如 index.htm, list.htm)的主体内容更加清晰,专注于展示当前页面的核心数据。
  4. 团队协作:前端开发者可以专注于修改 include 文件中的样式和结构,而后台内容编辑者则可以专注于修改模板文件中的标签,分工明确。

如何使用 include 文件夹?

织梦CMS提供了两种主要的方式来调用 include 文件夹中的文件:

织梦include里面的文件夹功能
(图片来源网络,侵删)

PHP原生代码(最常用)

这是最直接、最灵活的方式,直接在模板文件中使用PHP的 includerequire 语句。

语法:

<?php include_once(模板目录 . '/include/文件名.htm'); ?>

<?php require_once(模板目录 . '/include/文件名.htm'); ?>

参数说明:

织梦include里面的文件夹功能
(图片来源网络,侵删)
  • include_once vs require_once:两者功能类似,都是包含并运行指定文件,区别在于,如果文件不存在,include 会产生一个警告(Warning),但脚本会继续执行;而 require 则会产生一个致命错误(Fatal Error),脚本会停止执行。_once 后缀表示如果文件已经被包含过,则不会再包含一次,防止重复定义变量或函数。在模板中,推荐使用 include_once
  • 模板目录:这是织梦的一个全局变量,指向你当前使用的模板文件夹,如果你的模板文件夹是 /default/模板目录 的值就是 /default/,使用这个变量可以确保代码的通用性,即使你更换了模板名称,代码也不需要修改。
  • '/include/文件名.htm':这是相对于模板目录的路径。include 是默认的文件夹名,文件名.htm 是你创建的公共文件名。

示例: 假设你的模板目录是 /default/,你想在 index.htm 中引入页头和页脚。

  1. /templets/default/include/ 目录下,创建两个文件:header.htmfooter.htm
  2. header.htm 中写入你的页头HTML代码。
  3. footer.htm 中写入你的页脚HTML代码。
  4. index.htm 文件中,在相应位置加入以下代码:
<!DOCTYPE html>
<html>
<head>{dede:global.cfg_webname/}</title>
</head>
<body>
    <!-- 引入页头 -->
    <?php include_once(templets('include/header.htm')); ?>
    <div class="main-content">
        <!-- 这里是首页的主要内容 -->
        {dede:arclist titlelen='30' row='10'}
        <li><a href="[field:arcurl/]">[field:title/]</a></li>
        {/dede:arclist}
    </div>
    <!-- 引入页脚 -->
    <?php include_once(templets('include/footer.htm')); ?>
</body>
</html>

注意templets('include/header.htm')include_once(模板目录 . '/include/header.htm') 的简写写法,效果完全一样,更常用。

织梦自定义标签({dede:include}

织梦也提供了一个自定义标签 {dede:include} 来实现这个功能,它本质上是对PHP include 语句的封装。

语法:

{dede:include filename='include/文件名.htm' /}

参数说明:

  • filename='...':指定要包含的文件名,路径是相对于当前模板目录的。

示例: 使用 {dede:include} 标签实现上面的功能,index.htm 代码如下:

<!DOCTYPE html>
<html>
<head>{dede:global.cfg_webname/}</title>
</head>
<body>
    <!-- 使用织梦标签引入页头 -->
    {dede:include filename='include/header.htm' /}
    <div class="main-content">
        <!-- 这里是首页的主要内容 -->
        {dede:arclist titlelen='30' row='10'}
        <li><a href="[field:arcurl/]">[field:title/]</a></li>
        {/dede:arclist}
    </div>
    <!-- 使用织梦标签引入页脚 -->
    {dede:include filename='include/footer.htm' /}
</body>
</html>

两种方式对比:

  • PHP include:更灵活,可以在被包含的文件中使用PHP逻辑,比如循环、判断等。
  • 织梦 {dede:include}:语法更简洁,更适合纯HTML/CSS/JS的静态公共部分,对于纯静态内容,使用此标签可读性更高。

在实际开发中,两种方式可以混合使用,根据你的需求选择最合适的。

include 文件夹里的常见文件

include 文件夹通常存放以下类型的文件:

  • header.htm:网站页头,通常包含 <head> 标签(但有时也放在模板主文件里)、网站Logo、主导航菜单等。
  • footer.htm:网站页脚,通常包含版权信息、备案号、友情链接、返回顶部按钮等。
  • head.htm:专门存放 <head> 标签内容的文件,如 <meta> 信息、CSS文件引入、JS文件引入等。
  • menu.htm / nav.htm:导航栏的独立文件,特别是当导航栏比较复杂或有特殊交互时。
  • left.htm / right.htm:网站的左侧边栏或右侧边栏。
  • position.htm:面包屑导航(“首页 > 栏目 > 正文”)的模板文件。
  • function.php:存放一些自定义的PHP函数,这些函数可以在模板中被调用,这是实现高度定制化功能的利器。

最佳实践与注意事项

  1. 路径规范:始终使用 templets('...')模板目录 . '/...' 这样的相对路径,避免使用服务器的绝对路径(如 /var/www/html/...),这样能保证模板在不同服务器环境下的可移植性。
  2. 命名清晰:给 include 文件夹中的文件起一个有意义的名字,如 header.htm, footer.htm,方便自己和他人识别。
  3. 避免复杂逻辑:虽然可以在 include 文件里写PHP代码,但建议保持其简洁性,复杂的业务逻辑最好放在织梦的后台文件(/include/ 目录下的 .php 文件,注意是织梦程序根目录的 include)或自定义标签中。
  4. 静态化问题:织梦的页面生成是静态化的,如果你在 include 文件中使用了需要实时获取数据的PHP代码(如当前时间),静态化后这些数据可能不会更新,如果需要实时数据,应考虑使用AJAX异步加载。
  5. 权限设置:确保 include 文件夹及其内部的文件对Web服务器有正确的读写权限,否则可能导致模板无法正常解析或后台无法保存修改。

include 文件夹是织梦CMS模板开发中不可或缺的核心功能,它通过代码分离和模块化的思想,极大地提升了网站开发的效率可维护性,无论是使用原生的PHP include 语句,还是织梦的 {dede:include} 标签,其目的都是为了让网站结构更清晰,管理更轻松,掌握 include 文件夹的使用,是熟练运用织梦进行模板开发的第一步。

-- 展开阅读全文 --
头像
select在C语言Socket中如何高效使用?
« 上一篇 12-07
dede分页上下页如何从竖排改为横排?
下一篇 » 12-07

相关文章

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

目录[+]