-
帝国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 的详细解密将在后续文章中继续分享。
相关文章
-
在留言板和后台留言审核面板中显示留言者的IP地址,是增强网站安全性和管理效率的重要功能。通过记录和展示IP地址,管理员可以更方便地追踪留言来源,确保内容的真实性和合法性。本文将详细介绍如何实现这一功能,并优化搜索引擎排名(SEO)。 首先,我们需要了解如何在代码中正确插入IP地址的显示逻辑。以下是...2025-03-29
-
在网站开发中,保护用户隐私是一个重要的考虑因素。当您在分类信息内容页添加了发布人的IP显示功能时,可能会面临如何隐藏IP地址的部分数字以保护用户隐私的问题。本文将介绍一种方法,让您能够像处理评论中的IP地址一样,将IP地址的最后一位数字替换为“*”。 为了实现这一功能,您可以使用PHP代码对IP地...2025-03-29
-
创建符合SEO标准的Google Sitemap对于提高网站在搜索引擎中的可见性至关重要。以下是一篇经过改写的文章,详细介绍了如何利用栏目分别创建不同的Sitemap,并确保其符合Google的要求。 技术整理:24mp3技术支持:wm_chief, hicode 制作Google Sitema...2025-03-29
-
在构建动态网站时,使用循环结构来展示数据是一种常见的做法。例如,在EmpireCMS中,我们可以利用[e:loop]标签来实现这一功能。下面是一篇关于如何使用[e:loop]标签生成友情链接列表的文章,旨在优化搜索引擎排名(SEO),同时确保代码的可读性和功能性。 在EmpireCMS中,[e:l...2025-03-29