网络建站知识发布于分享网站

当前位置:首页>>新闻中心>>CMS教程>>帝国cms教程

帝国CMS 6.0字段处理函数功能解析

时间:2025-03-29 02:39:40    来源:    人气:1

前言:
在开发和使用自定义字段时,可以设置“后台增加信息处理函数”、“后台修改信息处理函数”、“前台增加信息处理函数”以及“前台修改信息处理函数”。这些函数主要用于对字段内容进行特殊处理,尤其适用于对字段存储格式有特定要求的模型。本文将详细介绍如何创建和使用这些字段处理函数。

基本设置步骤:
1、编写处理函数;
2、将函数复制到 e/class/userfun.php 文件中;
3、修改字段设置以引用处理函数名称。

字段处理函数格式:


function user_FieldFun($mid, $f, $isadd, $isq, $value, $cs) {
    return $value;
}
    

参数说明:
user_FieldFun:函数名
$mid:系统模型ID
$f:字段名
$isadd:值为 0 表示新增信息,值为 1 表示修改信息
$isq:值为 0 表示后台处理,值为 1 表示前台处理
$value:字段原始内容
$cs:字段附加参数,即字段处理函数处设置的参数内容

字段处理函数范例:

例子 1:自动在标题前面加 "[EmpireCMS]" 字样
后台字段函数设置:user_AddTitle


function user_AddTitle($mid, $f, $isadd, $isq, $value, $cs) {
    $value = '[EmpireCMS]' . $value;
    return $value;
}
    

例子 2:标题内容由 writer 和 befrom 字段组合而成
后台字段函数设置:user_TogTitle
标题字段显示 HTML 代码:
(说明:因为标题是必填项,所以要给初始值才不会提示内容空)


function user_TogTitle($mid, $f, $isadd, $isq, $value, $cs) {
    $value = $_POST@['writer'] . $_POST@['befrom'];
    return $value;
}
    

例子 3:上传图片并自动生成缩图
后台字段函数设置:user_TranImgAuto##170,120
(说明:后台的参数 170 表示缩图宽度,120 为缩图高度)
上传图片字段显示 HTML 代码:
(说明:变量名用“字段名”+imgrs,即跟函数中的“$filetf”变量对应)


function user_TranImgAuto($mid, $f, $isadd, $isq, $value, $cs) {
    global $empire, $dbtbpre, $public_r, $emod_r, $class_r, $tranpicturetype, $musername;
    $filetf = $f . 'imgrs'; // 变量名
    if (!$_FILES[$filetf]['name']) {
        return '';
    }
    $classid = (int)$_POST@['classid'];
    $id = (int)$_POST@['id'];
    $filepass = (int)$_POST@['filepass'];
    $filetype = GetFiletype($_FILES[$filetf]['name']);
    $pr = $empire->fetch1("select qaddtran,qaddtransize,qaddtranimgtype from {$dbtbpre}enewspublic limit 1");
    if (!$pr['qaddtran']) {
        printerror("CloseQTranPic", "", 1);
    }
    if (!strstr($pr['qaddtranimgtype'], "|" . $filetype . "|")) {
        printerror("NotQTranFiletype", "", 1);
    }
    if ($_FILES[$filetf]['size'] > $pr['qaddtransize'] * 1024) {
        printerror("TooBigQTranFile", "", 1);
    }
    if (!strstr($tranpicturetype, ',' . $filetype . ',')) {
        printerror("NotQTranFiletype", "", 1);
    }
    $tfr = DoTranFile($_FILES[$filetf]['tmp_name'], $_FILES[$filetf]['name'], $_FILES[$filetf]['type'], $_FILES[$filetf]['size'], $classid);
    if ($tfr['tran']) {
        $csr = explode(',', $cs);
        $maxwidth = $csr[0];
        $maxheight = $csr[1];
        $yname = $tfr['yname'];
        $name = $tfr['name'];
        include_once(ECMS_PATH . 'e/class/gd.php');
        // 生成缩图
        $filer = ResizeImage($yname, $name, $maxwidth, $maxheight, $public_r['spickill']);
        DelFiletext($yname);
        if ($filer['file']) {
            // 写入数据库
            $type = 1;
            $filetime = date("Y-m-d H:i:s");
            $filesize = @filesize($filer['file']);
            $filename = GetFilename(str_replace(ECMS_PATH, '', $filer['file']));
            $adduser = '[Member]' . $musername;
            $infoid = $isadd == 1 ? 0 : $id;
            $empire->query("insert into {$dbtbpre}enewsfile(filename,filesize,adduser,path,filetime,classid,no,type,id,cjid,fpath) values('$filename','$filesize','$adduser','$tfr[filepath]','$filetime','$classid','[" . $f . "]".addslashes(RepPostStr($_POST@[title])) . "','$type','$infoid','$filepass','$public_r[fpath]');");
            if ($isadd == 0) {
                $tbname = $emod_r[$mid]['tbname'];
                if (strstr($emod_r[$mid]['tbdataf'], ',' . $f . ',')) {
                    $ir = $empire->fetch1("select stb from {$dbtbpre}ecms_" . $tbname . " where id='$id'");
                    $ifr = $empire->fetch1("select " . $f . " from {$dbtbpre}ecms_" . $tbname . "_data_" . $ir[stb] . " where id='$id'");
                    $ifval = $ifr[$f];
                } else {
                    $ir = $empire->fetch1("select " . $f . " from {$dbtbpre}ecms_" . $tbname . " where id='$id'");
                    $ifval = $ir[$f];
                }
                if ($ifval) {
                    DelYQTranFile($classid, $id, $ifval, $f);
                }
            }
            $value = str_replace($tfr['filename'], $filename, $tfr['url']);
        }
    } else {
        $value = '';
    }
    return $value;
}
    

处理函数可以实现许多复杂的字段内容存储需求。以上仅提供了一些简单的例子,更多功能需要用户自行探索与实践。
更多 EmpireCMS 6.0 的详细解密将在后续文章中继续分享。

相关文章

  • 帝国CMS留言板显示IP的方法

    帝国CMS留言板显示IP的方法

    在留言板和后台留言审核面板中显示留言者的IP地址,是增强网站安全性和管理效率的重要功能。通过记录和展示IP地址,管理员可以更方便地追踪留言来源,确保内容的真实性和合法性。本文将详细介绍如何实现这一功能,并优化搜索引擎排名(SEO)。 首先,我们需要了解如何在代码中正确插入IP地址的显示逻辑。以下是...
    2025-03-29
  • 帝国显示IP问题的解决方案

    帝国显示IP问题的解决方案

    在网站开发中,保护用户隐私是一个重要的考虑因素。当您在分类信息内容页添加了发布人的IP显示功能时,可能会面临如何隐藏IP地址的部分数字以保护用户隐私的问题。本文将介绍一种方法,让您能够像处理评论中的IP地址一样,将IP地址的最后一位数字替换为“*”。 为了实现这一功能,您可以使用PHP代码对IP地...
    2025-03-29
  • 帝国系统生成完整GOOGLE SITEMAP的方法

    帝国系统生成完整GOOGLE SITEMAP的方法

    创建符合SEO标准的Google Sitemap对于提高网站在搜索引擎中的可见性至关重要。以下是一篇经过改写的文章,详细介绍了如何利用栏目分别创建不同的Sitemap,并确保其符合Google的要求。 技术整理:24mp3技术支持:wm_chief, hicode 制作Google Sitema...
    2025-03-29
  • 帝国CMS教程:使用灵动标签制作友情连接

    帝国CMS教程:使用灵动标签制作友情连接

    在构建动态网站时,使用循环结构来展示数据是一种常见的做法。例如,在EmpireCMS中,我们可以利用[e:loop]标签来实现这一功能。下面是一篇关于如何使用[e:loop]标签生成友情链接列表的文章,旨在优化搜索引擎排名(SEO),同时确保代码的可读性和功能性。 在EmpireCMS中,[e:l...
    2025-03-29

公众号