dede自定义宏标记文件存于哪个文件夹?

99ANYc3cd6
预计阅读时长 12 分钟
位置: 首页 DEDE建站 正文
  • 旧版 DedeCMS (5.x - 5.7): 主要存放在 /include/helpers/ 目录下。
  • 新版 DedeCMS (5.7 之后,如 5.8, V57-V574, V57-V574-GBK): 主要存放在 /include/ 目录下。

旧版 DedeCMS (DedeCMS 5.7)

在旧版本中,自定义宏标记通常以 helper_php.php 文件的形式存在,并且根据功能分类存放在不同的子文件夹中。

dede 自定义宏标记 在哪个文件夹
(图片来源网络,侵删)

主要存放位置:

/include/helpers/ 目录

这个目录下会有多个 helper_php.php 文件,每个文件负责一类宏标记:

  • archive.helper.php: 用于与文章、栏目相关的宏标记。
  • channel.helper.php: 用于与频道、栏目相关的宏标记。
  • extend.helper.php: 这是最常用的一个文件,用于存放你自定义的全局宏标记,如果你要添加一个新的宏标记,最安全、最推荐的方式就是修改这个文件。
  • float.helper.php: 用于浮动窗口相关的宏标记。
  • partview.class.php: 用于自定义页面模板({dede:include file='...' /})的核心类。
  • sysinfolib.helper.php: 用于系统信息相关的宏标记。

如何添加自定义宏标记(以旧版为例):

  1. 打开文件:使用 FTP 或文件管理器,登录你的网站服务器,打开 /include/helpers/extend.helper.php 文件。

  2. 添加函数:在文件末尾的 ?> 之前,添加你的自定义 PHP 函数,函数名必须以 lib_ 开头。

    dede 自定义宏标记 在哪个文件夹
    (图片来源网络,侵删)
  3. 函数示例

    // 这是一个自定义宏标记,用于显示 "Hello, [用户名]!"
    function lib_hello($aid, $name = '')
    {
        // $aid 和 $name 是你在调用宏标记时传入的参数,如 {dede:lib_hello('123', '织梦') /}
        // 即使不传参数,DedeCMS 也会默认传入一些值,$aid 通常为文章ID。
        if (empty($name)) {
            $name = "访客";
        }
        $str = "Hello, " . $name . "!";
        return $str;
    }
  4. 使用宏标记: 在任何模板文件(.htm)中,你都可以这样调用它:

    {dede:lib_hello('123', '织梦爱好者')}

新版 DedeCMS (DedeCMS 5.8, V57-V574-GBK)

在新版本中,DedeCMS 对代码结构进行了一些优化,虽然旧的 helpers 目录依然存在,但新增的、更核心的宏标记功能被整合到了 /include/ 目录下的 inc_archives_func.phpinc_channel_unit_functions.php 文件中

主要存放位置:

  1. /include/inc_archives_func.php: 这是新版中最重要的文件之一,包含了与文章列表、内容页相关的核心函数,也包括了扩展宏标记的注册和定义,如果你想在文章列表页或内容页使用新的宏标记,这里是你需要关注的重点。
  2. /include/inc_channel_unit_functions.php: 主要用于与频道、栏目相关的函数和宏标记。
  3. /include/helpers/extend.helper.php: 依然有效! 这个文件仍然可以用来添加全局通用的自定义宏标记,并且是很多开发者习惯使用的地方。

如何添加自定义宏标记(以新版为例):

方法与旧版类似,但更推荐使用新版的核心文件。

dede 自定义宏标记 在哪个文件夹
(图片来源网络,侵删)
  1. 打开文件:推荐打开 /include/inc_archives_func.php 文件。

  2. 添加函数:在文件末尾添加你的自定义函数,同样以 lib_ 开头。

  3. 函数示例

    // 这是一个自定义宏标记,用于格式化文章发布时间
    function lib_format_time($aid, $format = 'Y-m-d')
    {
        // $aid 是文章ID
        // $format 是传入的时间格式,如 {dede:lib_format_time('123', 'Y年m月d日') /}
        // 获取文章的发布时间
        $arcRow = $GLOBALS['dsql']->GetOne("SELECT pubdate FROM `#@__archives` WHERE id = '$aid'");
        if ($arcRow) {
            $timestamp = $arcRow['pubdate'];
            return MyDate($format, $timestamp);
        }
        return "未知时间";
    }
  4. 使用宏标记: 在文章列表页或内容页模板中调用:

    文章ID为123的发布时间是:{dede:lib_format_time('123', 'Y年m月d日 H时i分')}

如何确认你的 DedeCMS 版本?

如果你不确定自己的版本,可以:

  1. 查看网站后台:登录 DedeCMS 后台,在页面底部通常会有版本号信息。
  2. 查看核心文件:打开网站根目录下的 dede/ 文件夹,找到 config.phpindex.php,里面通常会定义版本号,define('DEDEINC', dirname(__FILE__)); 附近可能会有注释。
  3. 查看文件列表:直接检查 /include/ 目录下是否存在 inc_archives_func.php 文件,如果存在,基本可以判定是 5.7 之后的版本。

重要注意事项

  1. 修改前备份:在修改任何核心文件(如 extend.helper.phpinc_archives_func.php)之前,务必备份原文件!一旦修改出错,可能导致网站无法正常显示。
  2. 函数名规范:自定义宏标记的函数名必须以 lib_ 开头,否则 DedeCMS 无法识别和调用。
  3. 参数处理:函数的第一个参数 $aid 通常由系统自动传入(文章ID),后面的参数是你自己定义的,在函数内部要对传入的参数进行判断,避免出错。
  4. 缓存问题:添加或修改宏标记后,如果前台页面没有立即生效,请清除网站缓存(后台 -> 系统 -> 清除缓存)。

希望这个详细的解答能帮助你找到正确的文件位置!

-- 展开阅读全文 --
头像
dede织梦目录权限如何安全设置?
« 上一篇 12-07
砍柴网织梦5.7后台如何更换logo?
下一篇 » 12-07

相关文章

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

目录[+]