帝国cms7.5复制栏目时同时复制子栏目

我们在用帝国CMS的时候,经常有很多栏目和子栏目要建,一个一个建很麻烦,帝国的团队们你们能不能加个这个功能呢?我们只能自己改一些代码来实现了,我是帝国CMS7.5版本,其他版本也是可以的。
1、修改e/admin/addclass.php文件,大约在1355行,
的前面增加:

	   if($docopy){
      
	  ?>
	  <input type="checkbox" name="copyzlm" value="1" checked>复制子栏目&nbsp; 
	  
	   }
	   ?>
	   &nbsp;

2、修改e/admin/ecmsclass.php文件,大约在55行,将“AddClass( P O S T , _POST, POST,logininid, l o g i n i n ) ; ” 修 改 为 “ c A d d C l a s s ( loginin);”修改为“cAddClass( loginin);cAddClass(_POST, l o g i n i n i d , logininid, logininid,loginin);”

3、将以下代码拷贝到class/userfun.php中。


//---------------------------用户自定义标签函数文件
function cAddClass($add,$userid,$username){
     
        global $empire,$dbtbpre;
   if($add[copyzlm]=='1'){
     
    cAddClass1($add,$userid,$username);

        $r = $empire->fetch1( "select * from {
       $dbtbpre}enewsclass order by classid desc limit 1" );
                        $bsql=$empire->query("select * from {
       $dbtbpre}enewsclass where bclassid='$add[classid]' and bclassid<>'0'");
                        while($br=$empire->fetch($bsql)){
     
                        $br[copyzlm]='1';
                        $br[bclassid]=$r[classid];
                        $br[pripath]=$r[classpath];
                        $br[classpath]=strrchr($br[classpath],'/');
                        
                        if($br[islast]==0){
     
                        $brr=$br;
                        cAddClass($brr,$userid,$username);//递归

                        }else{
     
                        cAddClass1($br,$userid,$username,'1');
                        }
        }
                
}else{
     
     AddClass($add,$userid,$username);    
}
}


//增加栏目
function cAddClass1($add,$userid,$username,$zz=0){
     
        global $empire,$dbtbpre;
        //增加外部栏目
        if($add[ecmsclasstype])
        {
     
                AddWbClass($add,$userid,$username);
        }
        $add[classpath]=trim($add[classpath]);
        if(!$add[classname]||!$add[classpath]||!$add[modid])
        {
     
                printerror("EmptyClass","");
        }
        if($add[islast]&&(!$add[newstempid]||!$add[listtempid]))
        {
     
                printerror("LastMustChange","");
        }
        //操作权限
        CheckLevel($userid,$username,$classid,"class");
        if($zz==0){
     
        $add=DoPostClassVar($add);
        }
        //目录已存在
        if(strchr($add[classpath],".")||strchr($add[classpath],"/")||strchr($add[classpath],"\\"))
        {
     
//                printerror("badpath","");
        }
        $classpath=$add[pripath].$add[classpath];
        if(file_exists("../../".$classpath))
        {
     
                printerror("ReClasspath","");
        }
        //取得表名
        $tabler=GetModTable($add[modid]);
        $tabler[tid]=(int)$tabler[tid];
        //增加大栏目
        if(!$add[islast])
        {
     
                if(empty($add[bclassid]))//主栏目
                {
     
                        $sonclass="";
                        $featherclass="";
            }
                else//中级栏目
                {
     
                        //取得上一级父栏目
                        $r=$empire->fetch1("select featherclass,islast,wburl from {
       $dbtbpre}enewsclass where classid='$add[bclassid]'");
                        if($r[islast])//是否终极栏目
                        {
     
                                printerror("BclassNotLast","");
                        }
                        if($r[wburl])
                        {
     
                                printerror("BclassNotWb","");
                        }
                        if(empty($r[featherclass]))
                        {
     
                                $r[featherclass]="|";
                        }
                        $featherclass=$r[featherclass].$add[bclassid]."|";
                        $sonclass="";
            }
                //建立目录
                CreateClassPath($classpath);
                           $sql=$empire->query("insert into phome_enewsclass(bclassid,classname,sonclass,is_zt,lencord,link_num,newstempid,onclick,listtempid,featherclass,islast,classpath,classtype,newspath,filename,filetype,openpl,openadd,newline,hotline,goodline,classurl,groupid,myorder,filename_qz,hotplline,modid,checked,firstline,bname,islist,searchtempid,tid,tbname,maxnum,checkpl,down_num,online_num,listorder,reorder,intro,classimg,jstempid,addinfofen,listdt,showclass,showdt,checkqadd,qaddlist,qaddgroupid,qaddshowkey,adminqinfo,doctime,classpagekey,dtlisttempid,classtempid,nreclass,nreinfo,nrejs,nottobq,ipath,addreinfo,haddlist,sametitle,definfovoteid,wburl,qeditchecked,wapstyleid,repreinfo,pltempid,cgroupid,yhid,wfid) values($add[bclassid],'$add[classname]','$sonclass',0,$add[lencord],$add[link_num],$add[newstempid],0,$add[listtempid],'$featherclass',$add[islast],'$classpath','$add[classtype]','$add[newspath]',$add[filename],'$add[filetype]',$add[openpl],$add[openadd],$add[newline],$add[hotline],$add[goodline],'$add[classurl]',$add[groupid],$add[myorder],'$add[filename_qz]',$add[hotplline],$add[modid],$add[checked],$add[firstline],'$add[bname]',$add[islist],$add[searchtempid],$tabler[tid],'$tabler[tbname]',$add[maxnum],$add[checkpl],$add[down_num],$add[online_num],'$add[listorder]','$add[reorder]','$add[intro]','$add[classimg]',$add[jstempid],$add[addinfofen],$add[listdt],$add[showclass],$add[showdt],$add[checkqadd],$add[qaddlist],'$add[qaddgroupid]',$add[qaddshowkey],$add[adminqinfo],$add[doctime],'$add[classpagekey]','$add[dtlisttempid]','$add[classtempid]',$add[nreclass],$add[nreinfo],$add[nrejs],$add[nottobq],'$add[ipath]',$add[addreinfo],$add[haddlist],$add[sametitle],$add[definfovoteid],'',$add[qeditchecked],$add[wapstyleid],'$add[repreinfo]','$add[pltempid]','$add[cgroupid]','$add[yhid]','$add[wfid]');");
                $lastid=$empire->lastid();
                //副表
                $empire->query("replace into {
       $dbtbpre}enewsclassadd(classid,classtext) values('$lastid','".addslashes($add[classtext])."');");
                TogNotReClass(1);
                GetClass();
                if($add[islist]==0||$add[islist]==2)
                {
     
                        $classtemp=$add[islist]==2?GetClassText($lastid):GetClassTemp($add['classtempid']);
                        NewsBq($lastid,$classtemp,0,1);
                }
                DelListEnews();//删除缓存文件
                GetSearch($add[modid]);//更新缓存
                if($sql){
     
                        insert_dolog("classid=".$lastid."
classname="
.$add[classname]);//操作日志 // printerror("AddClassSuccess","AddClass.php?enews=AddClass&from=$add[from]"); } else{ printerror("DbError",""); } } //增加终级栏目 else { //文件前缀 $add[filename_qz]=RepFilenameQz($add[filename_qz]); if(empty($add[bclassid]))//主类别为终级栏目时 { $sonclass=""; $featherclass=""; } else//子栏目 { //取得上一级父栏目 $r=$empire->fetch1("select featherclass,islast,wburl from { $dbtbpre}enewsclass where classid='$add[bclassid]'"); //是否终极类别 if($r[islast]) { printerror("BclassNotLast",""); } if($r[wburl]) { printerror("BclassNotWb",""); } if(empty($r[featherclass])){ $r[featherclass]="|"; } $featherclass=$r[featherclass].$add[bclassid]."|"; $sonclass=""; } //建立栏目目录 CreateClassPath($classpath); $sql=$empire->query("insert into phome_enewsclass(bclassid,classname,sonclass,is_zt,lencord,link_num,newstempid,onclick,listtempid,featherclass,islast,classpath,classtype,newspath,filename,filetype,openpl,openadd,newline,hotline,goodline,classurl,groupid,myorder,filename_qz,hotplline,modid,checked,firstline,bname,islist,searchtempid,tid,tbname,maxnum,checkpl,down_num,online_num,listorder,reorder,intro,classimg,jstempid,addinfofen,listdt,showclass,showdt,checkqadd,qaddlist,qaddgroupid,qaddshowkey,adminqinfo,doctime,classpagekey,dtlisttempid,classtempid,nreclass,nreinfo,nrejs,nottobq,ipath,addreinfo,haddlist,sametitle,definfovoteid,wburl,qeditchecked,wapstyleid,repreinfo,pltempid,cgroupid,yhid,wfid) values($add[bclassid],'$add[classname]','$sonclass',0,$add[lencord],$add[link_num],$add[newstempid],0,$add[listtempid],'$featherclass',$add[islast],'$classpath','$add[classtype]','$add[newspath]',$add[filename],'$add[filetype]',$add[openpl],$add[openadd],$add[newline],$add[hotline],$add[goodline],'$add[classurl]',$add[groupid],$add[myorder],'$add[filename_qz]',$add[hotplline],$add[modid],$add[checked],$add[firstline],'$add[bname]',$add[islist],$add[searchtempid],$tabler[tid],'$tabler[tbname]',$add[maxnum],$add[checkpl],$add[down_num],$add[online_num],'$add[listorder]','$add[reorder]','$add[intro]','$add[classimg]',$add[jstempid],$add[addinfofen],$add[listdt],$add[showclass],$add[showdt],$add[checkqadd],$add[qaddlist],'$add[qaddgroupid]',$add[qaddshowkey],$add[adminqinfo],$add[doctime],'$add[classpagekey]','$add[dtlisttempid]','$add[classtempid]',$add[nreclass],$add[nreinfo],$add[nrejs],$add[nottobq],'$add[ipath]',$add[addreinfo],$add[haddlist],$add[sametitle],$add[definfovoteid],'',$add[qeditchecked],$add[wapstyleid],'$add[repreinfo]','$add[pltempid]','$add[cgroupid]','$add[yhid]','$add[wfid]');"); $lastid=$empire->lastid(); //副表 $empire->query("replace into { $dbtbpre}enewsclassadd(classid,classtext) values('$lastid','".addslashes($add[classtext])."');"); //修改父栏目的子栏目 if($add[bclassid]) { $b_r=$empire->fetch1("select sonclass,featherclass from { $dbtbpre}enewsclass where classid='$add[bclassid]'"); if(empty($b_r[sonclass])) { $b_r[sonclass]="|"; } $new_sonclass=$b_r[sonclass].$lastid."|"; $update=$empire->query("update { $dbtbpre}enewsclass set sonclass='$new_sonclass' where classid='$add[bclassid]'"); //更改父类别的父栏目的子栏目 $where=ReturnClass($b_r[featherclass]); if(empty($where)){ $where="classid=0"; } $bsql=$empire->query("select sonclass,classid from { $dbtbpre}enewsclass where ".$where); while($br=$empire->fetch($bsql)) { if(empty($br[sonclass])) { $br[sonclass]="|"; } $new_sonclass=$br[sonclass].$lastid."|"; $update=$empire->query("update { $dbtbpre}enewsclass set sonclass='$new_sonclass' where classid='$br[classid]'"); } } DelListEnews();//删除缓存文件 TogNotReClass(1); GetClass(); GetSearch($add[modid]);//更新缓存 if($sql){ insert_dolog("classid=".$lastid."
classname="
.$add[classname]);//操作日志 // printerror("AddLastClassSuccess","AddClass.php?enews=AddClass&from=$add[from]"); } else{ printerror("DbError","history.go(-1)"); } } } ?>

注意:
为了不修改原有的文件,我们新写了一下cAddClass函数,只需要调用这个函数就可以了,放到userfun.php文件中目的是不对classfun.php文件作改动。
好了,复制栏目试试看
帝国cms7.5复制栏目时同时复制子栏目_第1张图片
注意事项:
提交之后会显示白色页面,不要慌,千万不要慌,你可以更新缓存数据,然后再查看,成功了。
更新操作如下:
帝国cms7.5复制栏目时同时复制子栏目_第2张图片

你可能感兴趣的:(帝国CMS,php)