帝国cms7.2中,jiuhecai做了查找发现,生成首页的函数很多啊。大概有五个地方出现呵呵。
第一个地方,后台编辑用的
//函数hreindex位于文件/e/class/hinfofun.php中 //增加信息生成首页 function hReIndex() $indextemp=GetIndextemp(); NewsBq($classid,$indextemp,1,0); }
还有呢:前台投稿也需要生成首页啊
//函数QReIndex位于文件/e/class/qinfofun.php#中。 //投稿生成首页 function QReIndex() $indextemp=GetIndextemp(); NewsBq($classid,$indextemp,1,0); }
当当当当,正宫娘娘来了,后台刷新首页的:
//函数ReIndex位于文件/e/class/jhcchtmlfun.php中。 //刷新首页 function ReIndex() $indextemp=GetIndextemp();//取得模板 NewsBq($classid,$indextemp,1,0); insert_dolog("");//操作日志 printerror("ReIndexSuccess","history.go(-1)"); }
这算最牛逼的,因为有仪仗队啊,写了操作日记,返回了操作结果。
第四个地方,setnews.php中
//函数setenews位于文件/e/admin/SetEnews1.php中。 //参数设置 function SetEnews($add,$userid,$username) global $empire,$dbtbpre; ... DelFiletext(ECMS_PATH.'index.php'); $indextemp=GetIndextemp(); NewsBq(0,$indextemp,1,0); ...
第五个地方,定时刷新里肯定少不了啊:
//函数DoTimeRepage位于文件/e/admin/DoTimeRepage.php中。 //定时刷新任务 function DoTimeRepage($time) global $empire,$dbtbpre; if(empty($time)) {$time=120;} ... else//生成首页 { $indextemp=GetIndextemp(); NewsBq($classid,$indextemp,1,0); }...
可见,生成首页分两步,第一步获取模板,用getindextemp函数
//函数GetIndextemp位于文件/e/class/functions.php中。 //取得首页模板 function GetIndextemp() global $empire,$dbtbpre,$public_r; if($public_r['indexpageid']) { $r=$empire->fetch1("select temptext from {$dbtbpre}enewsindexpage where tempid='".$public_r['indexpageid']."'"); return $r['temptext']; } $r=$empire->fetch1("select indextemp from ".GetTemptb("enewspubtemp")." limit 1"); return $r['indextemp']; }
第二步,用NewsBq函数,第一个参数为0,第二个参数为模板字符串,第三个参数确保为1,第四个为0
现在,jiuhecai要装逼了,希望在刷新主端首页的时候,也同时刷新手机端的首页,我们就在这个函数中插入好了
//取得首页模板 function GetIndextemp(){ global $empire,$dbtbpre,$public_r; //jiuhecai add jhcShuaXin(__FUNCTION__,func_get_args(),2); //jiuhecai add end if($public_r['indexpageid']) { $r=$empire->fetch1("select temptext from {$dbtbpre}enewsindexpage where tempid='".$public_r['indexpageid']."'"); return $r['temptext']; } $r=$empire->fetch1("select indextemp from ".GetTemptb("enewspubtemp")." limit 1"); return $r['indextemp']; }
jhcShuaXin是我写的自定义函数,放到了eclassfunctions.php的最后
//多端刷新函数 by jiuhecai function jhcShuaXin($act,$args,$en){ global $emoreport_r,$public_r; if(!$public_r['add_tongBuRe'])return ''; $jhcr[action]=$act; $jhcr[canshu]=$args; $jhcr[en]=$en; $jhcr[purl]=$emoreport_r[$en][purl].'e/extend/jhcshua/index.php'; $jhcr[postpass]=$emoreport_r[$en][postpass]; $data[token]=md5(json_encode($jhcr)); unset($jhcr[postpass]); $data[data]=json_encode($jhcr); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $jhcr['purl']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch,CURLOPT_TIMEOUT,60); //定义超时60秒钟 curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); $output = curl_exec($ch); $errorCode = curl_errno($ch); curl_close($ch); if(0 !== $errorCode) { //return false; return $errorCode; } return $output; }
在手机端的e/extend/jhcshua/index.php文件中,处理下这个请求:
<?php define('EmpireCMSAdmin','1'); require("../../class/connect.php"); require("../../class/db_sql.php"); require("../../class/functions.php"); require("../../data/dbcache/class.php"); require("../../class/t_functions.php"); $link=db_connect(); $empire=new mysqlquery(); $editor=1; //验证用户 $token=$_POST[token]; $jhcr=json_decode($_POST[data],true); $en=$jhcr[en]; $jhcr[postpass]=$emoreport_r[$en][postpass]; if($token!==md5(json_encode($jhcr)))exit(false); // print_r($jhcr); switch($jhcr[action]){ case 'GetHtml': GetHtml($jhcr[canshu][0],$jhcr[canshu][1],'',0,1);//生成信息文件 exit("ok"); break; case 'GetIndextemp': $indextemp=GetIndextemp(); NewsBq(0,$indextemp,1,0); //刷新首页 exit("ok"); break; } echo "shibai"; exit;
这样,就轻松完成了,多端首页的同步刷新。
同理,在主端的functions.php中的gethtml里插入同样的一条语句,就实现了信息的同步刷新。函数里的2,表示手机端的id
//生成内容文件 function GetHtml($classid,$id,$add,$ecms=0,$doall=0){ global $public_r,$class_r,$class_zr,$fun_r,$empire,$dbtbpre,$emod_r,$class_tr,$level_r,$etable_r; //jiuhecai add jhcShuaXin(__FUNCTION__,func_get_args(),2); //jiuhecai add end $mid=$class_r[$classid]['modid']; ...
再接再厉,列表页的刷新,查到用到的函数是ListHtml,她也在functions.php中。
二话不说,也是插入一条语句:jhcShuaXin(__FUNCTION__,func_get_args(),2);结果就成了:
//生成信息列表 function ListHtml($classid,$fields,$enews=0,$userlistr=""){ global $empire,$dbtbpre,$emod_r,$public_r,$class_r,$class_zr,$fun_r,$class_tr,$level_r,$etable_r; jhcShuaXin(__FUNCTION__,func_get_args(),2);//add by jiuhecai ...
对应的,手机端的e/extend/jhcshua/index.php文件中要接应下,函数名是ListHtml,修改后是这样的:
<?php define('EmpireCMSAdmin','1'); require("../../class/connect.php"); require("../../class/db_sql.php"); require("../../class/functions.php"); require("../../data/dbcache/class.php"); require("../../class/t_functions.php"); $link=db_connect(); $empire=new mysqlquery(); $editor=1; //验证用户 $token=$_POST[token]; $jhcr=json_decode($_POST[data],true); $en=$jhcr[en]; $jhcr[postpass]=$emoreport_r[$en][postpass]; if($token!==md5(json_encode($jhcr)))exit(false); //分类刷新 switch($jhcr[action]){ case 'GetHtml': GetHtml($jhcr[canshu][0],$jhcr[canshu][1],'',0,1);//生成信息文件 break; case 'GetIndextemp': $indextemp=GetIndextemp(); NewsBq(0,$indextemp,1,0); //刷新首页 break; case 'ListHtml': ListHtml($jhcr[canshu][0],$jhcr[canshu][1],$jhcr[canshu][2],$jhcr[canshu][3]);//刷新列表 break; default: exit('0'); } exit(1);
临汾早晨也是这么闷热,真实秋后一伏,热老牛。帝国cms7.2的手机端列表页的同步更新搞定了。可以外出散步了。