帝国cms是非常牛逼的内容管理系统。
每个信息页面,都有绑定自己的模板。字段的名称为:newstempid,保存在副表。
一般的,信息在添加的时候,对应的内容模板值,来源于信息所属的栏目里指定的内容模板。当然,我们也可以在添加信息的界面单独指定内容模板。
初学者,往往会碰到这样的问题:栏目设置里,更改了内容模板,但是那些存在的信息,却还是固执的坚持着他们的老模板,这也太恋旧了。蛋疼之。
其实,在模板的设置里,有个小小的checkbox,不为你注意,只要勾选了她,问题迎刃而解。她是名称是:应用于已生成的信息。
怕你找不到,给你贴了图,呵呵,免了。瞪大眼睛仔细找,好加深你的印象。
在html里,她的名称是tobetempinfo,php层面的代码则是:
//应用于已生成的信息 if($add['tobetempinfo']) { UpdateAllDataTbField($tabler['tbname'],"newstempid='$add[newstempid]'"," where classid='$add[classid]'",1); }
如果勾选,那么更新现有的,该栏目下的,所有信息(审核的,未审核的,归档的)的绑定内容模板id。贴出
UpdateAllDataTbField
的代码,就更清楚了:
函数UpdateAllDataTbField位于文件/e/class/unctions.php#//更新副表字段内容中。
//更新副表字段内容 function UpdateAllDataTbField($tbname,$update,$where,$upcheck=1,$updoc=1){ global $empire,$dbtbpre; //已审核 $tbr=$empire->fetch1("select datatbs from {$dbtbpre}enewstable where tbname='$tbname' limit 1"); if($tbr['datatbs']) { $dtbr=explode(',',$tbr['datatbs']); $count=count($dtbr); for($i=1;$i<$count-1;$i++) { $empire->query("update {$dbtbpre}ecms_".$tbname."_data_".$dtbr[$i]." set ".$update.$where); } } //未审核 if($upcheck==1) { $empire->query("update {$dbtbpre}ecms_".$tbname."_check_data set ".$update.$where); } //归档 if($updoc==1) { $empire->query("update {$dbtbpre}ecms_".$tbname."_doc_data set ".$update.$where); } }