帝国cms仿站之新闻模型转换成文章模型的方法:在帝国cms中新闻系统模型和文章系统模型是比较相似的系统模型,初学者很容易搞混,其实这两种系统是有明显区别和使用侧重的, 1、内容存放的位置不同:新闻系统模型的内容(newstext)是存放数据库的;而文章系统模型的内容(newstext)是存放于文本文件。对于数据量比较大的,推荐使用文章系统模型。 2、是否支持内容搜索:新闻系统模型支持内容(newstext)搜索;而文章系统模型不支持内容(newstext)搜索。 3.、搜索效率不同:新闻系统模型的文章信息在phome_ecms_news里面(文章内容不在里面),文章内容在phome_ecms_news_data_1中newstext中,这样内容和标题不在一个表内,数据库大时,搜索会快一些;文章系统模型的文章所有信息都在phome_ecms_article里面,包括标题和内容,这样数据库大时,搜索一个会很慢。 在实际工作中,经常碰到有朋友需要把新闻模型转换成文章模型的需求,下面就分享下把新闻模型转换成文章模型时的操作步骤; 1、数据备份 非常重要。万一在转换过程中出现意外,确保数据安全。 2、数据库转换 将以下代码保存为一个php文件,文件编码格式与你网站编码相同,代码中的参数设置部分按照实际情况来填写。 <?php error_reporting(E_ERROR | E_WARNING | E_PARSE); @set_time_limit(1000); //********************* 参数设置开始 ********************* $newstb="gushi"; //需要转换的数据表 $cf='newstext';//需要转换的字段名 $fa=1;//字段位置,0为主表,1为副表 $changeline=50; //每组转换数 //********************* 参数设置结束 *********************
if($_GET['tochange']==1) { include("../class/connect.php"); include("../class/db_sql.php"); include("../class/functions.php"); $link=db_connect(); $empire=new mysqlquery(); dp_ChangeNewsToArticle($_GET['start']); } //开始转换 function dp_ChangeNewsToArticle($start=0){ global $empire,$newstb,$cf,$fa,$changeline,$dbtbpre; $start=(int)$start; if($start==0){ $ckist=$empire->fetch1("select fid,savetxt from {$dbtbpre}enewsf where tbname='$newstb' and f='$cf' limit 1"); if(!$ckist['fid']){ exit("参数设置错误"); } if(!$ckist['savetxt']){ //字段表 $empire->query("update {$dbtbpre}enewsf set savetxt=1 where tbname='$newstb' and f='$cf' limit 1"); //组合存文本 TogSaveTxtF(1); //更新缓存 GetConfig(1); } } $b=0; $tbname=$fa?$newstb."_data_1":$newstb; $sql=$empire->query("select id,classid,".$cf." from {$dbtbpre}ecms_".$tbname." where id>$start order by id limit ".$changeline); while($r=$empire->fetch($sql)){ $b=1; $newid=$r['id']; $newstext=dp_ReturnChangeNewstextUrl($r[$cf],$r['id']); $empire->query("update {$dbtbpre}ecms_".$tbname." set ".$cf."='$newstext' where id='$newid' limit 1"); } if($b==0) { echo"恭喜您!转换完毕。"; exit(); } echo"一组数据转换完毕,正进入下一组 (<font color=red><b>".$newid."</b></font>)......<script>self.location.href='index.php?tochange=1&start=$newid';</script>"; exit(); } //返回内容地址 function dp_ReturnChangeNewstextUrl($value,$id){ global $public_r,$newstb,$cf; //存放文本 if(strstr($public_r['savetxtf'],",".$newstb.".".$cf.",")) { $truetime=time(); //建立目录 $thetxtfile=GetFileMd5().$id; $truevalue=MkDirTxtFile(date("Y/md",$truetime),$thetxtfile); //写放文件 EditTxtFieldText($truevalue,$value); $value=$truevalue; } else{ exit("参数设置错误"); } return $value; } ?> <html> <head> <title>新闻模型转文章模型程序</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <style> a:link { COLOR: #000000; TEXT-DECORATION: none } a:visited { COLOR: #000000 ; TEXT-DECORATION: none } a:active { COLOR: #000000 ; TEXT-DECORATION: underline } a:hover { COLOR: #000000 ; TEXT-DECORATION:underline } .home_top { border-top:2px solid #4798ED; } .home_path { background:#4798ED; padding-right:10px; color:#F0F0F0; font-size: 11px; } td, th, caption { font-family: "宋体"; font-size: 12px; color:#000000; LINE-HEIGHT: 165%; } .hrLine{MARGIN: 0px 0px; BORDER-BOTTOM: #807d76 1px dotted;} </style> </head> <body> <p><br> <br> </p> <form method="get" action="index.php" onsubmit="return confirm('确认要执行?');"> <table width="500" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#0472BC"> <tr> <td height="25"><div align="center"><font color="#FFFFFF" size="3"><strong>新闻模型转文章模型程序</strong></font></div></td> </tr> <tr bgcolor="#FFFFFF"> <td height="50"> <div align="center"> <input type=submit name=ok value="点击开始转换"> <input type=hidden name="tochange" value=1> </div></td> </tr> </table> </form> </body> </html> 假设你为此新建了一个名为 zh.php 的文件,那么将此文件放到 e/update/ 文件夹中。那么你这时在浏览器中执行以下网址: http://www.fangzhan.org/e/update/zh.php?tochange=1 此程序会分组转换数据。 请注意: (1)不能重复转换,否则数据丢失。 (2)转换完之后请立即在服务器上删除此文件。 (3)此程序适用于帝国cms7.0及后续版本。 3、模板修改 如果你在之前模板中用php代码调用过被转换的字段,则此时需要用函数 GetTxtFieldText 来读取。 例如,在之前你调用newstext用代码: <?=$navinfor['newstext']?> newstext转换成存文本之后必调用代码是: <?=GetTxtFieldText($navinfor['newstext'])?> 4、补充说明:新闻模型与文章模型的区别 新闻系统模型的内容(newstext)是存放数据库的;而文章系统模型的内容(newstext)是存放于文本文件。对于数据量比较大的,推荐使用文章系统模型。 新闻系统模型支持内容(newstext)搜索;而文章系统模型不支持内容(newstext)搜索。
|