帝国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);
}
}
|