原文来自:https://liye5.com/

  帝国CMS新闻模型怎么转文章模型?帝国CMS把新闻模型文章转成文章模型的方法!

  经常会有人问到,帝国CMS新闻模型怎么转文章模型呢?相信很多的朋友都遇到过类似的问题,那么今天帝国CMS模板网就来告诉大家帝国CMS把新闻模型文章转成文章模型的方法,一起来看看怎么操作吧:

  刚开始接触帝国cms的时候,用新闻模型建了一个文章阅读站,最近网站转型,想发一些长篇文章,需要将新闻模型转为文章模型,搜了一下论坛和互联网,都没有能用于7.2的相关插件或工具,只好自己动手写一个。这里把代码和步骤分享出来,希望能帮助到其它人。

  1、老数据备份

  非常重要。万一在转换过程中出现意外,确保老数据安全部丢失。

  2、数据库转换

  将以下代码保存为一个php文件,文件编码格式与你网站编码相同,代码中的参数设置部分按照实际情况来填写。

  假设你为此新建了一个名为 zh.php 的文件,那么将此文件放到 e/update/ 文件夹中。那么你这时在浏览器中执行以下网址:

http://你的网址/e/update/zh.php?tochange=1

  此程序会分组转换数据。

  请注意:

  (1)不能重复转换,否则数据丢失。

  (2)转换完之后请立即在服务器上删除此文件。

  (3)此程序适用于帝国cms7.0及后续版本。

<?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=newmysqlquery();
	dp_ChangeNewsToArticle($_GET['start']);
}

//开始转换
functiondp_ChangeNewsToArticle($start=0){
	global$empire,$newstb,$cf,$fa,$changeline,$dbtbpre;
	$start=(int)$start;
	if($start==0){
		$ckist=$empire->fetch1("selectfid,savetxtfrom{$dbtbpre}enewsfwheretbname='$newstb'andf='$cf'limit1");
		if(!$ckist['fid']){
			exit("参数设置错误");
		}
		if(!$ckist['savetxt']){
			//字段表
			$empire->query("update{$dbtbpre}enewsfsetsavetxt=1wheretbname='$newstb'andf='$cf'limit1");
			//组合存文本
			TogSaveTxtF(1);
			//更新缓存
			GetConfig(1);
		}
	}
	$b=0;
	$tbname=$fa?$newstb."_data_1":$newstb;
	$sql=$empire->query("selectid,classid,".$cf."from{$dbtbpre}ecms_".$tbname."whereid>$startorderbyidlimit".$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'whereid='$newid'limit1");
	}
	if($b==0)
	{
		echo"恭喜您!转换完毕。";
		exit();
	}
	echo"一组数据转换完毕,正进入下一组(<fontcolor=red><b>".$newid."</b></font>)......<script>self.location.href='index.php?tochange=1&start=$newid';</script>";
	exit();
}

//返回内容地址
functiondp_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>
<metahttp-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:2pxsolid#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:0px0px;BORDER-BOTTOM:#807d761pxdotted;}
</style>
</head>
<body>
<p><br>
<br>
</p>
<formmethod="get"action="index.php"onsubmit="returnconfirm('确认要执行?');">
<tablewidth="500"border="0"align="center"cellpadding="3"cellspacing="1"bgcolor="#0472BC">
<tr>
<tdheight="25"><divalign="center"><fontcolor="#FFFFFF"size="3"><strong>新闻模型转文章模型程序</strong></font></div></td>
</tr>
<trbgcolor="#FFFFFF">
<tdheight="50">
<divalign="center">
<inputtype=submitname=okvalue="点击开始转换">
<inputtype=hiddenname="tochange"value=1>
</div></td>
</tr>
</table>
</form>
</body>
</html>

  3、模板修改

  如果你在之前模板中用php代码调用过被转换的字段,则此时需要用函数 GetTxtFieldText 来读取。

  例如,在之前你调用newstext用代码:

<?=$navinfor['newstext']?>

  newstext转换成存文本之后必调用代码是:

<?=GetTxtFieldText($navinfor['newstext'])?>

  4、补充说明:新闻模型与文章模型的区别

  新闻系统模型的内容(newstext)是存放数据库的;而文章系统模型的内容(newstext)是存放于文本文件。对于数据量比较大的,推荐使用文章系统模型。

  新闻系统模型支持内容(newstext)搜索;而文章系统模型不支持内容(newstext)搜索。

  OK,到这里就完成了,大家快去试试吧!