织梦标签dede php如何实现动态数据调用?

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

核心概念:标签、模板、PHP

  1. 织梦标签

    织梦标签 dede php
    (图片来源网络,侵删)
    • 本质:一种专用的、简化的代码语法,用于在模板文件中调用数据。
    • 作用:让不懂PHP的网站编辑人员也能通过简单的标签组合,动态地生成网页内容,而无需直接操作PHP代码。
    • 格式:通常由 {dede:标签名 属性='值'} 开头,由 {/dede:标签名} 对于单标签,则没有结束标签。
    • 示例
      • {dede:arclist titlelen='30' row='10'}...{/dede:arclist}:调用10条标题长度为30字符的文章列表。
      • {dede:field.title/}:获取当前文章或栏目的标题。
  2. 模板文件

    • 本质:一个包含HTML代码和织梦标签的文件,是网站的“骨架”和“皮肤”。
    • 扩展名:通常是 .htm
    • 位置:位于 /templets/ 目录及其子目录下,首页模板是 /templets/default/index.htm
    • 工作流程:当用户访问一个页面时,织梦引擎会读取对应的模板文件,解析其中的所有织梦标签,然后从数据库中获取数据,将数据填充到标签位置,最后生成一个纯HTML页面发送给用户的浏览器。
  3. PHP文件

    • 本质:织梦系统的“大脑”和“心脏”,负责处理所有业务逻辑。
    • 作用
      • 定义标签:PHP文件中编写了标签的具体实现逻辑,告诉织梦引擎这个标签应该做什么、如何从数据库取数据。
      • 处理请求:接收用户请求(如点击“阅读全文”),处理表单提交,进行用户登录验证等。
      • 管理后台:后台的所有功能(如文章发布、栏目管理)都是由PHP文件驱动的。
    • 位置:主要位于 /include//dede/(后台目录)等目录下。

织梦标签详解

织梦标签非常丰富,可以分为几大类。

常用列表类标签

这类标签用于循环输出内容列表。

织梦标签 dede php
(图片来源网络,侵删)
  • {dede:arclist}:文章列表标签,最常用。

    • 常用属性
      • typeid: 栏目ID,指定在哪个栏目下获取内容。typeid='0' 表示全站。
      • row: 获取条数,row='10' 表示获取10条。
      • titlelen: 标题长度,titlelen='30' 表示标题最多显示30个字符。
      • infolen: 内容摘要长度。
      • orderby: 排序方式,如 orderby='hot' (按点击量), orderby='pubdate' (按发布时间)。
      • channelid: 模型ID,channelid='1' 是文章模型。
    • 底层模板字段:在 {dede:arclist}{/dede:arclist} 之间,可以使用特定字段来显示每条信息的具体内容。
      • [field:title]: 文章标题。
      • [field:arcurl]: 文章链接。
      • [field:pubdate function='strftime("%Y-%m-%d",@me)'/]: 发布时间,通过function进行格式化。
      • [field:click]: 点击量。
      • [field:litpic]: 文章缩略图。

    示例:在首页模板中调用最新文章

    <ul>
      {dede:arclist typeid='1' row='5' titlelen='20'}
        <li>
          <a href="[field:arcurl/]">[field:title]</a>
          <span>[field:pubdate function='strftime("%m-%d",@me)'/]</span>
        </li>
      {/dede:arclist}
    </ul>
  • {dede:channel}:栏目列表标签,用于显示栏目导航。

    • 常用属性
      • typeid: 父栏目ID,typeid='0' 表示顶级栏目。
      • row: 显示栏目数量。
      • type: type='son' 表示显示子栏目,type='self' 表示显示本栏目。

内容详情类标签

这类标签用于在文章内容页(article_article.htm)中显示当前文章的详细信息。

织梦标签 dede php
(图片来源网络,侵删)
  • {dede:field}:获取当前文档的单个字段。
    • 常用属性
      • name: 字段名,必须指定。
    • 示例
      • {dede:field.name/}
      • {dede:field.posttime function='strftime("%Y-%m-%d %H:%M:%S",@me)'/}:发布时间。
      • {dede:field.body/}:文章正文内容。
      • {dede:field.keywords/}:文章关键词。

辅助类标签

这类标签用于实现一些特定功能,如分页、表单等。

  • {dede:pagelist}:分页列表标签,通常放在文章列表页。

    • 常用属性
      • listsize: 显示的页码数量。
      • listitem: 显示的分页项,如info,index,next,end,pre
  • {dede:include}:包含文件标签,用于引入其他模板文件,实现模块化。

    • 示例{dede:include filename='head.htm'/} 会引入 /templets/default/head.htm 文件。

PHP 文件详解

PHP文件是标签功能的具体实现者,理解它们的关系,就能进行自定义开发。

标签PHP文件

  • 位置/include/taglib/ 目录。
  • 命名规则标签名.lib.phparclist 标签的实现文件就是 arclist.lib.php
  • 工作原理
    1. 当模板引擎解析到 {dede:arclist ...} 时,它会自动去 /include/taglib/ 目录下寻找 arclist.lib.php 文件。
    2. 这个PHP文件定义了一个名为 lib_arclist 的函数(函数名规则为 lib_标签名)。
    3. 织梦引擎会调用这个函数,并把模板中设置的属性(如 typeid, row)作为参数传递进去。
    4. lib_arclist 函数内部会执行SQL查询,从数据库中获取数据,然后将数据格式化并返回给模板引擎。
    5. 模板引擎再将返回的数据填充到 {dede:arclist}...{/dede:arclist} 的位置。

示例:arclist.lib.php 的核心逻辑(简化版)

// 文件位置: /include/taglib/arclist.lib.php
function lib_arlist(&$ctag, &$refObj) {
    // 1. 获取标签属性
    $attlist = "typeid|0,row|10,titlelen|30";
    FillAttsDefault($ctag->CAttribute, $attlist);
    $typeid = $ctag->CAttribute['typeid'];
    $row = $ctag->CAttribute['row'];
    // 2. 编写SQL查询语句
    $sql = "SELECT id, title, pubdate, litpic FROM dede_archives WHERE typeid='$typeid' ORDER BY pubdate DESC LIMIT 0, $row";
    // 3. 执行查询,获取数据
    $dsql->SetQuery($sql);
    $dsql->Execute();
    $items = array();
    while ($row = $dsql->GetArray()) {
        $items[] = $row;
    }
    // 4. 返回数据,供模板循环使用
    return $items;
}

核心PHP文件

  • /include/dedetag.class.php:这是织梦模板引擎的核心类,它负责解析模板文件中的所有标签,并调用对应的 .lib.php 文件来获取数据。
  • /include/common.func.php:公共函数库,包含了许多常用的辅助函数,如 GetOneMysql()pasterImageUp() 等,在PHP标签和后台中都会被调用。
  • /dede/ 目录:整个后台系统的入口和所有功能模块的PHP文件。
    • /dede/article_add.php:处理“添加文章”的表单提交。
    • /dede/ catalog_add.php:处理“添加栏目”的请求。

关系总结与二次开发流程

关系图: 用户请求 -> PHP入口文件 (如 index.php) -> 织梦引擎 (dedetag.class.php) -> 读取模板 (.htm) -> 解析标签 -> 调用标签PHP (.lib.php) -> 执行SQL -> 获取数据 -> 填充模板 -> 生成HTML -> 返回给用户

自定义标签的开发流程(示例):创建一个“推荐文章”标签

  1. 需求:想在首页显示一个“编辑推荐”的文章列表。
  2. 步骤1:修改数据表:在 dede_archives 表中添加一个 is_recommended 字段(类型为 tinyint(1)),用于标记是否为推荐文章。
  3. 步骤2:创建标签PHP文件
    • /include/taglib/ 目录下创建一个新文件:recommend.lib.php
    • 在文件中编写 lib_recommend 函数,SQL查询语句需要加上 WHERE is_recommended = 1 的条件。
  4. 步骤3:在模板中使用标签
    • 在首页模板 (index.htm) 中,使用你新创建的标签:
      <h3>编辑推荐</h3>
      <ul>
        {dede:recommend row='5' titlelen='20'}
          <li><a href="[field:arcurl/]">[field:title]</a></li>
        {/dede:recommend}
      </ul>
  5. 步骤4(可选):后台集成
    • 修改文章编辑模板 (/templets/default/article_edit.htm),在表单中增加一个复选框,用于设置 is_recommended 字段的值。
    • 修改文章保存的PHP文件 (/dede/article_edit.php),在保存数据时,将复选框的值更新到 is_recommended 字段。

通过以上流程,你就可以成功地扩展织梦系统的功能,而不仅仅是局限于它自带的标签,掌握标签与PHP的关系,是成为织梦高手的关键一步。

-- 展开阅读全文 --
头像
织梦dedecmsv5.7如何安全升级与维护?
« 上一篇 01-02
Error C2146,C语言语法错误原因何在?
下一篇 » 01-02

相关文章

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

目录[+]