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

前言:
增加/修改字段时可以设置“后台增加信息处理函数”、“后台修改信息处理函数”、“前台增加信息处理函数”、“前台修改信息处理函数”,可以分别设置对字段内容处理的函数,对于对字段内容存放格式有特殊要求的模型用得比较多。今天我们再简单讲解下处理函数制作格式。


基本设置步骤:
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,$cs){
$value='[EmpireCMS]'.$value;
return $value;
}



例子2:标题内容由writer和befrom字段的组合
后台字段函数设置:user_TogTitle
标题字段显示HTML代码:<input type="hidden" name="title" value="test">
(说明:因为标题是必填项,所以要给初始值才不会提示内容空)

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



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

function user_TranImgAuto($mid,$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;
}



处理函数可以实现很多非常复杂的字段内容存放格式需求,上面只是举了几个简单的例子,更多需要用户去实践。


更多帝国CMS 6.0解密请听下回分解。


版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


http://shang.qq.com/widget/group.php
[e:loop={91,5,0,0}] <liclass="bj_<?=$bqno?>"><ahref="<?=$bqsr['titleurl']?>"target="_blank"><?=esub($bqr[title],30)?></a></li> [/e:loop] 其中91表示&nbs…
原文地址:帝国cms修改编辑器的预览功能作者:白头豕帝国CMS的投稿和录入界面没有专门的"预览"功能。fckeditor编辑器里倒是有一个预览,只是功能比较简陋,得到的预览页面没有特别的样式,与网站本身内容页的效果相差甚远。 解决这个问题其实很简单,只要修改fckeditor的两个js文件:fckeditor…
增加后台自定义编辑界面 当值后台界面的地址:D:EmpireServerwebeadminadminstyle 复制1变成3,然后更改页面 把不想客户用到的隐藏掉即可 然后回到后台新建立一个后台样式。 …
原文地址:帝国cms调用当前栏目下所有栏目名称和链接顶级栏目下的栏目调用作者:缘若秋风 这里要用要一个标签了,叫做循环栏目导航标签 [listshowclass]'selfinfo',9,0,0[/listshowclass] 上面的意思是: 'selfinfo'为当前栏目 使用编辑为9的标签模板 下面贴…
解决方法:http://bbs.phome.net/showthread-13-148886-0.html
灵动标签应用之“调用最新DIGG顶的最多的文章” [e:loop={'select*from[!db.pre!]ecms_newswherechecked=1orderbydiggtopdesc,iddesclimit8',10,24,0}] <li><ahr…
更新所有栏目的内容文章页 问题? 如果你把网站迁移成功,打开列表页,单击文章,缺打不开页面的话,怎么解决? 第一种解决方法: 第一步:登陆后台页面,打开【信息】页面,选中栏目名,单击【修改】,然后再点击保存。即可 备注:这样的方法比较麻烦,因为需要每条信息都重复这…
修改帝国默认的列表分页样式和伪静态页面留言版的分页样式。本来想在默认的模板标签上修改,看了看代码,和标签前后都多了空格,如果在现在的基础上改,简单改改也行,不过实在是受不了那么多空格符,而且如果用display:block的话,会出现一个阶梯状的样式,所以修改分页的样式势在必行…
在帝国CMS的模板数据调用里面,直接调用友情链接的是 [phomelink]每行显示数,显示总数,操作类型,分类id,是否显示原链接[/phomelink] 然而这种调用方式在页面生成以后是使用TABLE标签直接显示的,既不能很好的掌握其美观程度,也不符合标准。但是这个[phomelink]标签又没提供标签模…
更改后台登陆次数? 登陆ftp文件,打开E/CLASS/config.php文件,'loginnum'=>100,这个是更改登陆次数的单词。 查看后台登陆认证码? //后台安全设置 登陆ftp文件,打开E/CLASS/config.php文件,$do_loginauth=''; //登录认证码,…
灵动标签应用之“调用信息当天信息加New标志” 本功能实现调用信息时候如果是当天发布的最新信息显示New标志图片。 代码: <ul> [e:loop={栏目ID,显示条数,操作类型,只显示有标题图片}] <? $newimg=""; if(date("m-d",$bqr[truetime])==date("m…
http://jingyan.baidu.com/article/5d6edee228a88899eadeeca7.html
首先我们需要做的就是新建一个地图模板,模板-增加自定义页面模板。 我这里已经填写好了模板内容,代码我写出来: <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transi…
登陆数据库,http://losthost/phpmyadmin,找到phome_enewsuser数据表, 输入SELECT*FROM`phome_enewsuser` phome_enewsuser数据表的信息查询点击执行按钮,会查询出来用户名和密码是多少,由于密码是被md5加密…
==============判断新闻的样式【前面加图标【紧====热】】================== [e:loop={'7,39,46,50',10,0,0,'','onclickDESC'}] <? //print_r($bqr);die(); //echo$bqr; $good=""; &nb…
这个js模版不能使搜索引擎搜到,所以尽量不要用。 第一步:建立js模版。 点击【模版】―【js模版】―【管理js模版】,打开,新建【js模版】,按照列表模版的方式建立。 第二步:打开【栏目】_[管理自定义】新建【自定义js】, 第三步:调用js模版。打开公共模版,动态头…
在【系统】――【安全参数配置】――【后台登陆认证码】输入你想输入的认证码即可。
题描述: 如何更改 当前位置导航中的 【首页 】两字和【首页后面的大于号】 您当前的位置:首页 > 人才频道 > 招聘 如何搞成: 您当前的位置:沛县在线 > 人才频道 > 招聘 解决办法: 1,更改 首页 两个字 e/class/connect.php 搜索:$fun_r['in…
第一步:登陆后台页面,打开【系统】―【数据表与系统模版】―【管理系统模版】,然后点击【修改】按钮。 第二步:去掉你想不显示的一项,在他的后面把对勾去掉即可 第三步:分别选中(录入表单模板)和(前台投稿表单模板)两项,然后点击【提交】按钮。 …