帝国CMS二次开发教程之内容页模板的制作和整站完善
- 格式:ppt
- 大小:2.14 MB
- 文档页数:45
DedeCMS二次开发必备基础:•非常熟悉HTML•熟悉DIV+CSS的布局•扎实的PHP基础,熟悉结构化编程,了解OOP,并能看懂和使用•熟悉MYSQL,掌握SQL语言DedeCMS二次开发学习过程•理解CMS是什么•熟悉DedeCMS的功能(如:栏目的分类,文档管理,模型的使用,系统的设置等常用的功能)•掌握DedeCMS的模板标签使用及原理•DedeCMS目录结构分析熟悉每个文件夹里面主要装什么文件,这样在二次开发的时候知道在哪个文件夹下的什么文件修改目录结构摘要:./a 生成文件存放路径./data 缓存文件及数据中心/admin 管理后台数据/backupdata 备份数据/cache 缓存文件/enums 级别联动数据,JS,枚举类型的缓存文件/js 常用的JS/mark 水印相关文件/module 模块安装文件/rss Rss相关/sessions Session 存放路径/textdata 文本数据/tplcache 模板缓存/uploadtmp 上传文件缓存位置/ziptmp zip包解压缓存位置……•DedeCMS文件结构分析熟悉每个文件的基本功能,方便做修改,知道每个文件的大概作用之后,可以方便的对文件进行修改文件结构摘要:common.inc.php 数据库配置文件config.cache.bak.php 后台系统配置备份config.cache.inc.php 后台系统配置文件缓存downmix.data.php 采集混淆缓存文件mysql_error_track.inc MYSQL错误��志safequestions.php 安全问题sitemap.html 站点地图sys_pay.cache.php 支付网关配置template.rand.php 随机模板设置……•DedeCMS数据库结构分析,至少要熟悉每个表的作用熟悉每个表的作用,了解几个核心表的设计及字段的含义,方便拿到新的需求之后,能快速的判断是否加字段,还是新建表来处理。
模板套系与风格区别•模板套系:统一的一类模板,集中放置并打包的系列。
•风格:应用某个模板套系,并改变其中变量设置的一个方案。
扩展模板创建创建模板套系•首先进入后台 - 界面 - 模板管理,扩展制作模板时需要创建一个专属套系用来后期修改o基于“模板套系”可以扩展针对 ./template/default/ 目录中对的模板文件o创建套系的原则是不破坏原有模板基础上进行全新的扩展模板设计实例1.在站点根目录 ./template/中创建新的目录如" ./template/mytest"2.在 mytest 目录中创建必要子目录与文件如:./template/mytest/common/./template/mytext/common/extend_common.css./template/mytext/common/extend_module.css•其中common目录为公共模板目录,其内部新建的extend_common.css、extend_module.css为扩展型CSS文件,它们可以在./template/default/common/common.css的和module.css的基础上进行CSS代码的覆盖性扩展•如果需要替换论坛首页模板,可以新建 ./template/mytext/common/forum/discuz.htm,或复制./template/default中的对应文件放在 mytext 对应目录,以在缓存生成时覆盖原有模板缓存,达到修改模板而不破坏原生模板的目的后台风格管理•进入后台 - 界面 - 风格管理o“风格管理”可以对已有风格进行风格变量的编辑,也可以基于前面创建的“模板套系”来全新开辟新的风格新建风格•后台风格管理中,可以通过新增和复制原有风格进行新建风格的操作•新建风格之后,需要编辑它,调整里面的“匹配模板”为上面创建的新套系即可风格管理编辑页面中重点风格常量介绍•匹配模板:对应的模板套系•扩展配色:此风格基础上可用于用户切换配色方案的扩展,它对应 ./template/mytest/style/ 目录中的样式文件。
程序篇4.1、自定义模型使用教程在织梦系统中有内容模型这个概念,不同内容模型可以用来构建不同内容形式的站点,在系统中自带了以下几种模型:普通文章、图集、软件、商品、分类信息、专题。
通过系统自带的模型,我们可以用来构建不同类型的站点,例如:使用图集可以做一个图片站,用软件模型构建一个软件下载站点。
当然以上随系统附带的模型被称为系统模型,用户可以自己定义一些模型,比如图书、音乐专辑等,自定义了这些模型才可以构建更多内容形式的站点,本篇将讲述如何使用系统的自定义模型管理功能来实现内容模型的构建。
我们首先登录系统后台,点击[核心]-[内容模型管理],进入内容模型管理界面,如下图所示:这里我们介绍几个相关参数的概念:•ID号用于区分模型的唯一ID,一般常规模型的ID都是大于0的,比如普通文章、软件等,如果使用了单表模型,ID一般需要小于-1,例如这里的分类信息模型;•频道名称用于识别频道类型的标识;•识别id系统用于识别的id,这个关系到模板方面;•附加表系统内容附加表项;•模型类型分为系统类型和自动类型,系统类型为固化在系统中的内容模型,自动类型为用户可创建的内容模型类型;接下来我们开始介绍如何使用自定义模型管理来创建一个自己的模型,并且用于建设不同内容类型的网站中去。
这里我们介绍一些周边的内容,几个要用到的概念:•字段在数据库中,表的列称为字段,织梦系统也是如此,但更恰当的说法,存储某个内容信息单元,称为字段,例如标题、来源、作者等都是一个字段;•内容系统主表程序将一些公用字段存储在系统主表dede_archives,例如:标题、关键词、缩略图等,主表具体字段可以查询织梦帮助中心()的有关二次开发手册数据表部分的内容;•附加表不同内容模型对应不同的附加表,通常以dede_addon[识别ID]命名,附加表中存放的都是详细内容的相关字段(非公用),例如:文章内容(dede_addonarticle)、软件类型(dede_addonsoft)、图片集合(dede_addonimage)等;•单表独立模型存储时候不用到“主表+附加表”的结构形式,直接使用单个数据表进行存储内容数据,这样脱离主从表,减少主表数据服在开销,可以从很大程度上解决数据负载问题;明白了以上几个概念我们可以来学习如何来自己创建一个内容模型了。
帝国cms建站总结-(分页)帝国cms分页代码⽂件t_functions.php代码为:<?phpif(!defined('InEmpireCMS')){exit();}define('InEmpireCMSTfun',TRUE);require_once(ECMS_PATH."e/class/userfun.php");//列表模板分页函数function sys_ShowListPage($num,$pagenum,$dolink,$dotype,$page,$lencord,$ok,$search="",$add){global$fun_r;//⽂件名if(empty($add['dofile'])){$add['dofile']='index';}//静态页数$repagenum=$add['repagenum'];//⾸页if($pagenum<>1){$pagetop="<a href='".$dolink.$add['dofile'].$dotype."'>".$fun_r['startpage']."</a> ";}else{$pagetop=$fun_r['startpage']." ";}//上⼀页if($pagenum<>1){$pagepr=$pagenum-1;if($pagepr==1){$prido=$add['dofile'].$dotype;}else{$prido=$add['dofile'].'_'.$pagepr.$dotype;}$pagepri="<a href='".$dolink.$prido."'>".$fun_r['pripage']."</a> ";}else{$pagepri=$fun_r['pripage']." ";}//下⼀页if($pagenum<>$page){$pagenex=$pagenum+1;$nextpagelink=$repagenum&&$repagenum<$pagenex?eReturnRewritePageLink2($add,$pagenex):$dolink.$add['dofile'].'_'.$pagenex.$dotype;$pagenext="<a href='".$nextpagelink."'>".$fun_r['nextpage']."</a> ";}else{$pagenext=$fun_r['nextpage']." ";}//尾页if($pagenum==$page){$pageeof=$fun_r['lastpage'];}else{$lastpagelink=$repagenum&&$repagenum<$page?eReturnRewritePageLink2($add,$page):$dolink.$add['dofile'].'_'.$page.$dotype;$pageeof="<a href='".$lastpagelink."'>".$fun_r['lastpage']."</a>";}$options="";//取得下拉页码if(empty($search)){for($go=1;$go<=$page;$go++){if($go==1){$file=$add['dofile'].$dotype;}else{$file=$add['dofile'].'_'.$go.$dotype;}$thispagelink=$repagenum&&$repagenum<$go?eReturnRewritePageLink2($add,$go):$dolink.$file;if($ok==$go){$select=" selected";}else{$select="";}$myoptions.="<option value='".$thispagelink."'>".$fun_r['gotos'].$go.$fun_r['gotol']."</option>";$options.="<option value='".$thispagelink."'".$select.">".$fun_r['gotos'].$go.$fun_r['gotol']."</option>";}}else{$myoptions=$search;$options=str_replace("value='".$dolink.$add['dofile'].'_'.$ok.$dotype."'>","value='".$dolink.$add['dofile']."_".$ok.$dotype."' selected>",$search); }$options="<select name=select onchange=\"self.location.href=this.options[this.selectedIndex].value\">".$options."</select>";//分页$pagelink=$pagetop.$pagepri.$pagenext.$pageeof;//替换模板变量$pager['showpage']=ReturnListpageStr($pagenum,$page,$lencord,$num,$pagelink,$options);$pager['option']=$myoptions;return$pager;}//列表模板之列表式分页function sys_ShowListMorePage($num,$page,$dolink,$type,$totalpage,$line,$ok,$search="",$add){global$fun_r,$public_r;if($num<=$line){$pager['showpage']='';return$pager;}//⽂件名if(empty($add['dofile'])){$add['dofile']='index';}//静态页数//$totalpage=ceil($num/$line);//取得总页数$firststr=' 共有'.$num.'条记录';//上⼀页if($page<>1){$toppage='<a href="'.$dolink.$add['dofile'].$type.'">'.$fun_r['startpage'].'</a> ';$pagepr=$page-1;if($pagepr==1){$prido=$add['dofile'].$type;}else{$prido=$add['dofile'].'_'.$pagepr.$type;}$prepage='<a href="'.$dolink.$prido.'">'.$fun_r['pripage'].'</a>';}//下⼀页if($page!=$totalpage){$pagenex=$page+1;$nextpagelink=$repagenum&&$repagenum<$pagenex?eReturnRewritePageLink2($add,$pagenex):$dolink.$add['dofile'].'_'.$pagenex.$type;$lastpagelink=$repagenum&&$repagenum<$totalpage?eReturnRewritePageLink2($add,$totalpage):$dolink.$add['dofile'].'_'.$totalpage.$type;$nextpage=' <a href="'.$nextpagelink.'">'.$fun_r['nextpage'].'</a>';$lastpage=' <a href="'.$lastpagelink.'">'.$fun_r['lastpage'].'</a>';}$starti=$page-$snum<1?1:$page-$snum;$no=0;for($i=$starti;$i<=$totalpage&&$no<$page_line;$i++){$no++;if($page==$i){$is_1="<b>";$is_2="</b>";}elseif($i==1){$is_1='<a href="'.$dolink.$add['dofile'].$type.'">';$is_2="</a>";}else{$thispagelink=$repagenum&&$repagenum<$i?eReturnRewritePageLink2($add,$i):$dolink.$add['dofile'].'_'.$i.$type;$is_1='<a href="'.$thispagelink.'">';$is_2="</a>";}$returnstr.=' '.$is_1.$i.$is_2;}$returnstr=$toppage.$prepage.$returnstr.$nextpage.$lastpage.$firststr;$pager['showpage']=$returnstr;return$pager;}//返回内容分页function sys_ShowTextPage($totalpage,$page,$dolink,$add,$type,$search=""){global$fun_r,$public_r;if($totalpage==1){return '';}$page_line=$public_r['textpagelistnum'];$snum=2;//$totalpage=ceil($num/$line);//取得总页数$firststr='<a title="Page"> <b>'.$page.'</b>/<b>'.$totalpage.'</b> </a> ';//上⼀页if($page<>1){$toppage='<a href="'.$dolink.$add[filename].$type.'">'.$fun_r['startpage'].'</a> ';$pagepr=$page-1;if($pagepr==1){$prido=$add[filename].$type;}else{$prido=$add[filename].'_'.$pagepr.$type;}$prepage='<a href="'.$dolink.$prido.'">'.$fun_r['pripage'].'</a>';}//下⼀页if($page!=$totalpage){$pagenex=$page+1;$nextpage=' <a href="'.$dolink.$add[filename].'_'.$pagenex.$type.'">'.$fun_r['nextpage'].'</a>';$lastpage=' <a href="'.$dolink.$add[filename].'_'.$totalpage.$type.'">'.$fun_r['lastpage'].'</a>';}$starti=$page-$snum<1?1:$page-$snum;$no=0;for($i=$starti;$i<=$totalpage&&$no<$page_line;$i++){$no++;if($page==$i){$is_1="<b>";$is_2="</b>";}elseif($i==1){$is_1='<a href="'.$dolink.$add[filename].$type.'">';$is_2="</a>";}else{$is_1='<a href="'.$dolink.$add[filename].'_'.$i.$type.'">';$is_2="</a>";}$returnstr.=' '.$is_1.$i.$is_2;}$returnstr=$toppage.$prepage.$returnstr.$nextpage.$lastpage.$firststr;return$returnstr;}//返回下拉式内容分页导航function sys_ShowTextPageSelect($thispagenum,$dolink,$add,$filetype,$n_r){if($thispagenum==1){return '';}$titleselect='';for($j=1;$j<=$thispagenum;$j++){$title=$add[title];$plink=$add[filename].$filetype;}else{$k=$j-1;$ti_r=explode('[/!--empirenews.page--]',$n_r[$k]);if(count($ti_r)>=2&&$ti_r[0]){$title=$ti_r[0];}else{$title=$add[title].'('.$j.')';}$plink=$add[filename].'_'.$j.$filetype;}$titleselect.='<option value="'.$dolink.$plink.'?'.$j.'">'.$title.'</option>';}$titleselect='<select name="titleselect" onchange="self.location.href=this.options[this.selectedIndex].value">'.$titleselect.'</select>'; return$titleselect;}//返回sql语句function sys_ReturnBqQuery($classid,$line,$enews=0,$do=0,$ewhere='',$eorder=''){global$empire,$public_r,$class_r,$class_zr,$navclassid,$dbtbpre,$fun_r,$class_tr,$emod_r,$etable_r,$eyh_r;if($enews==24)//按sql查询{$query_first=substr($classid,0,7);if(!($query_first=='select '||$query_first=='SELECT ')){return "";}$classid=RepSqlTbpre($classid);$sql=$empire->query1($classid);if(!$sql){echo"SQL Error: ".ReRepSqlTbpre($classid);}return$sql;}if($enews==0||$enews==1||$enews==2||$enews==9||$enews==12||$enews==15)//栏⽬{if(strstr($classid,','))//多栏⽬{$son_r=sys_ReturnMoreClass($classid,1);$classid=$son_r[0];$where=$son_r[1];}else{if($classid=='selfinfo')//显⽰当前栏⽬信息{$classid=$navclassid;}if($class_r[$classid][islast]){$where="classid='$classid'";}else{$where=ReturnClass($class_r[$classid][sonclass]);}}$tbname=$class_r[$classid][tbname];$mid=$class_r[$classid][modid];$yhid=$class_r[$classid][yhid];}elseif($enews==6||$enews==7||$enews==8||$enews==11||$enews==14||$enews==17)//专题{echo"Error:Change to use e:indexloop";return false;}elseif($enews==25||$enews==26||$enews==27||$enews==28||$enews==29||$enews==30)//标题分类{if(strstr($classid,','))//多标题分类{$son_r=sys_ReturnMoreTT($classid);$classid=$son_r[0];$where=$son_r[1];}else{$where="ttid='$classid'";}$mid=$class_tr[$classid][mid];$tbname=$emod_r[$mid][tbname];$yhid=$class_tr[$classid][yhid];}$query='';$qand=' and ';if($enews==0)//栏⽬最新{$query=' where ('.$where.')';$order='newstime';$yhvar='bqnew';}elseif($enews==1)//栏⽬热门{$query=' where ('.$where.')';$order='onclick';$yhvar='bqhot';}elseif($enews==2)//栏⽬推荐{$query=' where ('.$where.') and isgood>0';$order='newstime';$yhvar='bqgood';}elseif($enews==9)//栏⽬评论排⾏{$query=' where ('.$where.')';$order='plnum';$yhvar='bqpl';}elseif($enews==12)//栏⽬头条{$query=' where ('.$where.') and firsttitle>0';$order='newstime';$yhvar='bqfirst';elseif($enews==15)//栏⽬下载排⾏{$query=' where ('.$where.')';$order='totaldown';$yhvar='bqdown';}elseif($enews==3)//所有最新{$qand=' where ';$order='newstime';$tbname=$public_r[tbname];$mid=$etable_r[$tbname][mid];$yhvar='bqnew';$yhid=$etable_r[$tbname][yhid];}elseif($enews==4)//所有点击排⾏{$qand=' where ';$order='onclick';$tbname=$public_r[tbname];$mid=$etable_r[$tbname][mid];$yhvar='bqhot';$yhid=$etable_r[$tbname][yhid];}elseif($enews==5)//所有推荐{$query=' where isgood>0';$order='newstime';$tbname=$public_r[tbname];$mid=$etable_r[$tbname][mid];$yhvar='bqgood';$yhid=$etable_r[$tbname][yhid];}elseif($enews==10)//所有评论排⾏{$qand=' where ';$order='plnum';$tbname=$public_r[tbname];$mid=$etable_r[$tbname][mid];$yhvar='bqpl';$yhid=$etable_r[$tbname][yhid];}elseif($enews==13)//所有头条{$query=' where firsttitle>0';$order='newstime';$tbname=$public_r[tbname];$mid=$etable_r[$tbname][mid];$yhvar='bqfirst';$yhid=$etable_r[$tbname][yhid];}elseif($enews==16)//所有下载排⾏{$qand=' where ';$order='totaldown';$tbname=$public_r[tbname];$mid=$etable_r[$tbname][mid];$yhvar='bqdown';$yhid=$etable_r[$tbname][yhid];}elseif($enews==18)//各表最新{$qand=' where ';$order='newstime';$tbname=$classid;$mid=$etable_r[$tbname][mid];$yhvar='bqnew';$yhid=$etable_r[$tbname][yhid];}elseif($enews==19)//各表热门{$qand=' where ';$order='onclick';$tbname=$classid;$mid=$etable_r[$tbname][mid];$yhvar='bqhot';$yhid=$etable_r[$tbname][yhid];}elseif($enews==20)//各表推荐{$query=' where isgood>0';$order='newstime';$tbname=$classid;$mid=$etable_r[$tbname][mid];$yhvar='bqgood';$yhid=$etable_r[$tbname][yhid];}elseif($enews==21)//各表评论排⾏{$qand=' where ';$order='plnum';$tbname=$classid;$mid=$etable_r[$tbname][mid];$yhvar='bqpl';$yhid=$etable_r[$tbname][yhid];}elseif($enews==22)//各表头条信息{$query=' where firsttitle>0';$order="newstime";$tbname=$classid;$mid=$etable_r[$tbname][mid];$yhvar='bqfirst';$yhid=$etable_r[$tbname][yhid];}elseif($enews==23)//各表下载排⾏{$qand=' where ';$order='totaldown';$tbname=$classid;$mid=$etable_r[$tbname][mid];$yhvar='bqdown';$yhid=$etable_r[$tbname][yhid];}elseif($enews==25)//标题分类最新{$query=' where ('.$where.')';$order='newstime';$yhvar='bqnew';}elseif($enews==26)//标题分类点击排⾏ {$order='onclick';$yhvar='bqhot';}elseif($enews==27)//标题分类推荐{$query=' where ('.$where.') and isgood>0';$order='newstime';$yhvar='bqgood';}elseif($enews==28)//标题分类评论排⾏{$query=' where ('.$where.')';$order='plnum';$yhvar='bqpl';}elseif($enews==29)//标题分类头条{$query=' where ('.$where.') and firsttitle>0';$order='newstime';$yhvar='bqfirst';}elseif($enews==30)//标题分类下载排⾏{$query=' where ('.$where.')';$order='totaldown';$yhvar='bqdown';}//优化$yhadd='';if(!empty($eyh_r[$yhid]['dobq'])){$yhadd=ReturnYhSql($yhid,$yhvar);if(!empty($yhadd)){$query.=$qand.$yhadd;$qand=' and ';}}//不调⽤if(!strstr($public_r['nottobq'],','.$classid.',')){$notbqwhere=ReturnNottoBqWhere();if(!empty($notbqwhere)){$query.=$qand.$notbqwhere;$qand=' and ';}}//图⽚信息if(!empty($do)){$query.=$qand.'ispic=1';$qand=' and ';}//附加条件if(!empty($ewhere)){$query.=$qand.'('.$ewhere.')';$qand=' and ';}//中⽌if(empty($tbname)){echo$fun_r['BqErrorCid']."=<b>".$classid."</b>".$fun_r['BqErrorNtb']."(".$fun_r['BqErrorDo']."=".$enews.")";return false;}//排序$addorder=empty($eorder)?$order.' desc':$eorder;$query='select '.ReturnSqlListF($mid).' from '.$dbtbpre.'ecms_'.$tbname.$query.' order by '.ReturnSetTopSql('bq').$addorder.' limit '.$line;$sql=$empire->query1($query);if(!$sql){echo"SQL Error: ".ReRepSqlTbpre($query);}return$sql;}//返回标签模板function sys_ReturnBqTemp($tempid){global$empire,$dbtbpre,$fun_r;$r=$empire->fetch1("select tempid,modid,temptext,showdate,listvar,subnews,rownum,docode from ".GetTemptb("enewsbqtemp")." where tempid='$tempid'"); if(empty($r[tempid])){echo$fun_r['BqErrorNbqtemp']."(ID=".$tempid.")";}return$r;}//替换栏⽬名function ReplaceEcmsinfoClassname($temp,$enews,$classid){global$class_r,$class_zr;if(strstr($classid,",")){return$temp;}$thecdo=',0,1,2,9,12,15,';$thezdo=',6,7,8,11,14,17,';//栏⽬if(strstr($thecdo,",".$enews.",")){$classname=$class_r[$classid][classname];$r[classid]=$classid;$classurl=sys_ReturnBqClassname($r,9);}//专题elseif(strstr($thezdo,",".$enews.",")){$r[ztid]=$classid;$classname=$class_zr[$classid][ztname];$classurl=sys_ReturnBqZtname($r);}else{}if($classname){$temp=str_replace("[!--the.classname--]",$classname,$temp);$temp=str_replace("[!--the.classurl--]",$classurl,$temp);$temp=str_replace("[!--the.classid--]",$classid,$temp);}return$temp;}function sys_GetEcmsInfo($classid,$line,$strlen,$have_class=0,$enews=0,$tempid,$doing=0,$ewhere='',$eorder=''){ global$empire,$public_r;$sql=sys_ReturnBqQuery($classid,$line,$enews,$doing,$ewhere,$eorder);if(!$sql){return "";}//取得模板$tr=sys_ReturnBqTemp($tempid);if(empty($tr['tempid'])){return "";}$listtemp=str_replace('[!--news.url--]',$public_r[newsurl],$tr[temptext]);$subnews=$tr[subnews];$listvar=str_replace('[!--news.url--]',$public_r[newsurl],$tr[listvar]);$rownum=$tr[rownum];$formatdate=$tr[showdate];$docode=$tr[docode];//替换变量$listtemp=ReplaceEcmsinfoClassname($listtemp,$enews,$classid);if(empty($rownum)){$rownum=1;}//字段$ret_r=ReturnReplaceListF($tr[modid]);//列表$list_exp="[!--empirenews.listtemp--]";$list_r=explode($list_exp,$listtemp);$listtext=$list_r[1];$no=1;$changerow=1;while($r=$empire->fetch($sql)){$r[oldtitle]=$r[title];//替换列表变量$repvar=ReplaceListVars($no,$listvar,$subnews,$strlen,$formatdate,$url,$have_class,$r,$ret_r,$docode);$listtext=str_replace("<!--list.var".$changerow."-->",$repvar,$listtext);$changerow+=1;//超过⾏数if($changerow>$rownum){$changerow=1;$string.=$listtext;$listtext=$list_r[1];}$no++;}//多余数据if($changerow<=$rownum&&$listtext<>$list_r[1]){$string.=$listtext;}$string=$list_r[0].$string.$list_r[2];echo$string;}//灵动标签:返回SQL内容函数function sys_ReturnEcmsLoopBq($classid=0,$line=10,$enews=3,$doing=0,$ewhere='',$eorder=''){return sys_ReturnBqQuery($classid,$line,$enews,$doing,$ewhere,$eorder);}//灵动标签:返回特殊内容函数function sys_ReturnEcmsLoopStext($r){global$class_r;$sr['titleurl']=sys_ReturnBqTitleLink($r);$sr['classname']=$class_r[$r[classid]][bname]?$class_r[$r[classid]][bname]:$class_r[$r[classid]][classname]; $sr['classurl']=sys_ReturnBqClassname($r,9);return$sr;}//返回相关链接操作类型function sys_OtherLinkQuery($classid,$line,$enews,$doing){global$empire,$public_r,$class_r,$class_zr,$navinfor,$dbtbpre,$eyh_r,$etable_r,$class_tr;if($enews==1)//按表{$tbname=$classid;}elseif($enews==2)//按栏⽬{if($classid=='selfinfo')//当前栏⽬{$classid=$navinfor['classid'];}$tbname=$class_r[$classid]['tbname'];if($class_r[$classid][islast]){$and="classid='$classid'";}else{$and=ReturnClass($class_r[$classid][sonclass]);}}elseif($enews==3)//按标题分类{$tbname=$class_tr[$classid]['tbname'];$and="ttid='$classid'";}else//默认{$tbname=$class_r[$navinfor[classid]]['tbname'];}//关键字$keys='';if(!empty($enews)){$repadd='';$keyr=explode(',',$navinfor['keyboard']);$count=count($keyr);for($i=0;$i<$count;$i++){if($i==0){$or='';}else{$or=' or ';}$repadd.=$or."[!--f--!] like '%".$keyr[$i]."%'";}//搜索范围if($public_r['newslink']==1){$keys='('.str_replace('[!--f--!]','keyboard',$repadd).')';}{$keys='('.str_replace('[!--f--!]','keyboard',$repadd).' or '.str_replace('[!--f--!]','title',$repadd).')';}else{$keys='('.str_replace('[!--f--!]','title',$repadd).')';}}else{$keys='id in ('.$navinfor['keyid'].')';}//当前信息if($tbname==$class_r[$navinfor[classid]][tbname]){$and.=empty($and)?"id<>'$navinfor[id]'":" and id<>'$navinfor[id]'";}//图⽚信息if($doing){$and.=empty($and)?"ispic=1":" and ispic=1";}if($and){$and.=' and ';}if(empty($line)){$line=$class_r[$navinfor[classid]]['link_num'];}//优化$yhvar='otherlink';$yhid=$etable_r[$tbname][yhid];$yhadd='';if($yhid){$yhadd=ReturnYhSql($yhid,$yhvar,1);}$query="select * from {$dbtbpre}ecms_".$tbname." where ".$yhadd.$and.$keys." order by newstime desc limit $line";$sql=$empire->query1($query);if(!$sql){echo"SQL Error: ".ReRepSqlTbpre($query);}return$sql;}//相关链接标签function sys_GetOtherLinkInfo($tempid,$classid='',$line=0,$strlen=60,$have_class=0,$enews=0,$doing=0){global$empire,$navinfor,$public_r;if(empty($navinfor['keyboard'])||(empty($enews)&&!$navinfor['keyid'])){return '';}$sql=sys_OtherLinkQuery($classid,$line,$enews,$doing);if(!$sql){return "";}//取得模板$tr=sys_ReturnBqTemp($tempid);if(empty($tr['tempid'])){return "";}$listtemp=str_replace('[!--news.url--]',$public_r[newsurl],$tr[temptext]);$subnews=$tr[subnews];$listvar=str_replace('[!--news.url--]',$public_r[newsurl],$tr[listvar]);$rownum=$tr[rownum];$formatdate=$tr[showdate];$docode=$tr[docode];//替换变量$listtemp=ReplaceEcmsinfoClassname($listtemp,$enews,$classid);if(empty($rownum)){$rownum=1;}//字段$ret_r=ReturnReplaceListF($tr[modid]);//列表$list_exp="[!--empirenews.listtemp--]";$list_r=explode($list_exp,$listtemp);$listtext=$list_r[1];$no=1;$changerow=1;while($r=$empire->fetch($sql)){$r[oldtitle]=$r[title];//替换列表变量$repvar=ReplaceListVars($no,$listvar,$subnews,$strlen,$formatdate,$url,$have_class,$r,$ret_r,$docode);$listtext=str_replace("<!--list.var".$changerow."-->",$repvar,$listtext);$changerow+=1;//超过⾏数if($changerow>$rownum){$changerow=1;$string.=$listtext;$listtext=$list_r[1];}$no++;}//多余数据if($changerow<=$rownum&&$listtext<>$list_r[1]){$string.=$listtext;}$string=$list_r[0].$string.$list_r[2];echo$string;}//⽂字标签函数function sys_GetClassNews($classid,$line,$strlen,$showdate=true,$enews=0,$have_class=0,$formatdate='(m-d)',$ewhere='',$eorder=''){ global$empire;$sql=sys_ReturnBqQuery($classid,$line,$enews,0,$ewhere,$eorder);if(!$sql){return "";}$record=0;while($r=$empire->fetch($sql)){$record=1;$oldtitle=$r[title];$title=sub($r[title],0,$strlen,false);//标题属性$title=DoTitleFont($r[titlefont],$title);//显⽰栏⽬$myadd=sys_ReturnBqClassname($r,$have_class);//显⽰时间if($showdate)$newstime=date($formatdate,$r[newstime]);$newstime=" ".$newstime;}//标题链接$titleurl=sys_ReturnBqTitleLink($r);$title="·".$myadd."<a href='".$titleurl."' target=_blank title='".$oldtitle."'>".$title."</a>".$newstime;$allnews.="<tr><td height=20>".$title."</td></tr>";}if($record){echo"<table border=0 cellpadding=0 cellspacing=0>$allnews</table>";}}//图⽂信息调⽤function sys_GetClassNewsPic($classid,$line,$num,$width,$height,$showtitle=true,$strlen,$enews=0,$ewhere='',$eorder=''){global$empire;$sql=sys_ReturnBqQuery($classid,$num,$enews,1,$ewhere,$eorder);if(!$sql){return "";}//输出$i=0;while($r=$empire->fetch($sql)){$i++;if(($i-1)%$line==0||$i==1){$class_text.="<tr>";}//标题链接$titleurl=sys_ReturnBqTitleLink($r);//------是否显⽰标题if($showtitle){$oldtitle=$r[title];$title=sub($r[title],0,$strlen,false);//标题属性$title=DoTitleFont($r[titlefont],$title);$title="<br><span style='line-height:15pt'>".$title."</span>";}$class_text.="<td align=center><a href='".$titleurl."' target=_blank><img src='".$r[titlepic]."' width='".$width."' height='".$height."' border=0 alt='".$oldtitle."'>".$title."</a></td>";//分割if($i%$line==0){$class_text.="</tr>";}}if($i<>0){$table="<table width=100% border=0 cellpadding=3 cellspacing=0>";$table1="</table>";$ys=$line-$i%$line;$p=0;for($j=0;$j<$ys&&$ys!=$line;$j++){$p=1;$class_text.="<td></td>";}if($p==1){$class_text.="</tr>";}}$text=$table.$class_text.$table1;echo"$text";}//⼴告标签function sys_GetAd($adid){global$empire,$public_r,$dbtbpre;$r=$empire->fetch1("select * from {$dbtbpre}enewsad where adid='$adid'");//到期if($r['endtime']<>'0000-00-00'&&time()>to_time($r['endtime'])){echo addslashes($r[reptext]);return '';}if($r['ylink']){$ad_url=$r['url'];}else{$ad_url=$public_r[newsurl]."e/public/ClickAd?adid=".$adid;//⼴告链接}//----------------------⽂字⼴告if($r[t]==1){$r[titlefont]=$r[titlecolor].','.$r[titlefont];$picurl=DoTitleFont($r[titlefont],$r[picurl]);//⽂字属性$h="<a href='".$ad_url."' target=".$r[target]." title='".$r[alt]."'>".addslashes($picurl)."</a>";//普通显⽰if($r[adtype]==1){$html=$h;}//可移动透明对话框else{$html="<script language=javascript src=".$public_r[newsurl]."d/js/acmsd/ecms_dialog.js></script><div style='position:absolute;left:300px;top:150px;width:".$r[pic_width]."; height:".$r[pic_height].";z-index:1;solid;filter:alpha(opacity=90)' id=DGbanner5 onmousedown='down1(this)' onmousemove='move()' onmouseup='down=false'><table cellpad }}//------------------html⼴告elseif($r[t]==2){$h=addslashes($r[htmlcode]);//普通显⽰if($r[adtype]==1){$html=$h;}//可移动透明对话框else{$html="<script language=javascript src=".$public_r[newsurl]."d/js/acmsd/ecms_dialog.js></script><div style='position:absolute;left:300px;top:150px;width:".$r[pic_width]."; height:".$r[pic_height].";z-index:1;solid;filter:alpha(opacity=90)' id=DGbanner5 onmousedown='down1(this)' onmousemove='move()' onmouseup='down=false'><table cellpad }}//------------------弹出⼴告elseif($r[t]==3){//打开新窗⼝if($r[adtype]==8){$html="<script>window.open('".$r[url]."');</script>";}。
帝国CMS自定义系统模型详解-电脑资料帝国CMS系统模型就是通常所说的系统模块,如:新闻系统,下载系统,商城系统等,。
而自定义系统模型就是用户可以根据需要自由扩展各种系统模块。
EmpireCMS卓越之处在于:不仅提供了网站管理功能,而且还提供了系统扩展框架,您可以直接在后台通过新建表、自定义字段,然后组成新的系统模型,以实现各种适合用户自己的系统。
如下载系统、音乐系统、商城系统、产品库、分类信息等等......同时,此功能可将信息量分配于不同的信息表,为数据量较大的网站进行数据部署。
因系统模型扩展特性,EmpireCMS又被誉为“万能建站工具”。
在4.6版本中,此功能又一次得到了升华,不仅增强了后台管理系统的可扩展性,而且前台互动性系统的扩展也能发挥得淋漓尽致,在稳定性、扩展性与完善性等诸多方面都得到了更完美的提升!自定义系统模型一般步骤:1、系统分析;2、建立数据表;3、建立字段;4、建立系统模型;5、完成,电脑资料《帝国CMS 自定义系统模型详解》(https://www.)。
·举例说明:制作“作品管理系统”1、系统分析:经过分析我们需要的字段如下:(字段标识:字段名)姓名:name联系邮箱:email联系电话:tel作品名:title作品:tranfile作品简介:smalltext作品预览图:titlepic2、建立数据表:建立作品存放数据表登陆后台->"系统设置"->"新建数据表"。
提交后,数据表即可增加成功,转至"管理数据表"会显示刚才新建的表。
3、建立字段:由于作品与作品预览图是系统内置字段,所以下面我们增加其余字段。
登陆后台->"系统设置"->"管理数据表"->点击作品数据表的"管理字段"->"新建字段",新建“联系邮箱”字段,新建“联系电话”字段,新建“作品”字段,新建“作品简介”字段。
DedeCMS二次开发必备基础:•非常熟悉HTML•熟悉DIV+CSS的布局•扎实的PHP基础,熟悉结构化编程,了解OOP,并能看懂和使用•熟悉MYSQL,掌握SQL语言DedeCMS二次开发学习过程•理解CMS是什么•熟悉DedeCMS的功能(如:栏目的分类,文档管理,模型的使用,系统的设置等常用的功能)•掌握DedeCMS的模板标签使用及原理•DedeCMS目录结构分析熟悉每个文件夹里面主要装什么文件,这样在二次开发的时候知道在哪个文件夹下的什么文件修改目录结构摘要:./a 生成文件存放路径./data 缓存文件及数据中心/admin 管理后台数据/backupdata 备份数据/cache 缓存文件/enums 级别联动数据,JS,枚举类型的缓存文件/js 常用的JS/mark 水印相关文件/module 模块安装文件/rss Rss相关/sessions Session 存放路径/textdata 文本数据/tplcache 模板缓存/uploadtmp 上传文件缓存位置/ziptmp zip包解压缓存位置……•DedeCMS文件结构分析熟悉每个文件的基本功能,方便做修改,知道每个文件的大概作用之后,可以方便的对文件进行修改文件结构摘要:common.inc.php 数据库配置文件config.cache.bak.php 后台系统配置备份config.cache.inc.php 后台系统配置文件缓存downmix.data.php 采集混淆缓存文件mysql_error_track.inc MYSQL错误��志safequestions.php 安全问题sitemap.html 站点地图sys_pay.cache.php 支付网关配置template.rand.php 随机模板设置……•DedeCMS数据库结构分析,至少要熟悉每个表的作用熟悉每个表的作用,了解几个核心表的设计及字段的含义,方便拿到新的需求之后,能快速的判断是否加字段,还是新建表来处理。
DEDECMS模板二次开发篇一:DedeCMS二次开发手册DedeCMS V5.7二次开发手册一、模板篇1.1、主要模板文件与功能说明DedeCMS系统的模板是非固定的,用户可以在新建栏目时可以自行选择栏目模板,官方仅提供最基本的默认模板,即是内置系统模型的各个模板,由于DedeCMS支持自定义频道模型,用户自定义新频道模型后,还需要按该模型的字段设计一套新的模板,此外,DedeCMS也支持使用风格的形式使用模板,默认风格是 default,它表示系统默认使用{cmspath}/templets/default 这个文件夹的模板,如果你下载了一套新的模板,你可以不必要删除 default 原有的文件,把下载的模板文件夹命名你想要的风格名称,如 style2 等,然后在后台修改了默认的模板风格名称为 style2 ,那系统将使用{cmspath}/templets/style2 这文件当作默认模板,但是若你手工指定了栏目模板的位置,则后台参数风格的定义无效。
一、概念,设计和使用模板,必须要理解下面几个概念1、板块(封面)模板:指网站主页或比较重要的栏目封面频道使用的模板,一般用“index_识别ID.htm”命名,此外,用户单独定义的单个页面或自定义标记,也可选是否支持板块模板标记,如果支持,系统会用板块模板标记引擎去解析后才输出内容或生成特定的文件。
2、列表模板:指网站某个栏目的所有文章列表的模板,一般用“list_识别ID.htm” 命名。
3、档案模板:表示文档查看页的模板,如文章模板,一般用“article_识别ID.htm” 命名。
4、其它模板:一般系统常规包含的模板有:主页模板、搜索模板、RSS、JS编译功能模板等,此外用户也可以自定义一个模板创建为任意文件。
二、命名,DedeCMS模板默认命名规则如下1、模板保存位置:模板目录:{cmspath} /templets/样式名称(英文,默认为default,其中system为系统底层模板,plus为插件使用的模板)/具体功能模板文件}2、模板文件命名规范:(1)index_识别ID.htm:表示板块(栏目封面)模板;(2)list_识别ID.htm:表示栏目列表模板;(3)article_识别ID.htm:表示内容查看页(文档模板,包括专题查看页);(4)search.htm:搜索结果列表模板;(5)index.htm:主页模板;注解:[识别ID]可以在“频道模型管理”的地方获得,当然,你也可以在“频道模型管理”的地方确定某个频道的模板命名。
《帝国网站管理系统》使用教程一、系统概述二、系统安装1. 准备工作操作系统:Windows/LinuxWeb服务器:Apache/Nginx2. 与访问帝国网站管理系统官方网站,最新版本的系统安装包。
然后,将安装包到您的服务器上,并解压到网站根目录。
3. 安装向导(1)同意安装协议,“下一步”。
(2)填写数据库信息,包括数据库服务器、数据库名、数据库用户名和密码。
确认无误后,“下一步”。
(3)填写网站信息,包括网站名称、管理员账号、密码等。
“下一步”。
(4)安装完成,系统将自动创建数据表,并配置文件。
“进入后台”,开始使用帝国网站管理系统。
三、后台管理1. 登录后台2. 后台界面网站设置:包括网站基本设置、导航设置、模块管理等。
内容管理:包括新闻发布、产品发布、管理等。
用户管理:包括管理员账号管理、会员管理等。
系统工具:包括缓存清理、数据备份、友情管理等。
3. 常用操作(1)添加新闻步骤一:在后台左侧菜单栏,找到“内容管理”“新闻管理”,进入。
步骤二:“添加新闻”,填写新闻、内容、来源等信息,设置发布时间。
步骤三:“提交”,新闻即可发布到网站上。
(2)添加产品步骤一:在后台左侧菜单栏,找到“内容管理”“产品管理”,进入。
步骤二:“添加产品”,填写产品名称、简介、价格等信息,产品图片。
步骤三:“提交”,产品即可发布到网站上。
(3)添加友情步骤一:在后台左侧菜单栏,找到“系统工具”“友情管理”,进入。
步骤二:“添加友情”,填写名称、网址等信息。
步骤三:“提交”,友情即可显示在网站上。
四、模板与风格定制1. 选择模板步骤一:登录后台,找到“模板管理”模块。
步骤二:在“模板风格”列表中,选择您喜欢的模板,“使用此模板”。
步骤三:确认应用新模板,您的网站将立即呈现新的风格。
2. 自定义模板如果您具备一定的网页设计能力,可以尝试自定义模板。
操作步骤如下:步骤一:在“模板管理”模块中,找到“模板编辑”功能。
步骤二:选择您要编辑的模板文件,进行在线编辑或到本地编辑。
“帝国网站管理系统二次开发常见问题”知识点评估题
学习知识点后请完成以下练习题
1)如果开启了“关闭前台所有动态页面”选项,二次开发的文件可以在开发的程序代码顶部一行加:define('EmpireCMSAdmin','1');就可以不受此设置影响进行访问( )。
(判断)
2)LoadLang()导入语言包文件路径是相对于 ../data/language/ 目录( )。
(判断)
3)$editor声明目录层次变量是如果没有使用printerror()等函数可以不设置,默认$editor变量为0。
( )。
(判断)
4)导入栏目、专题、标题分类缓存文件存在于/e/data/dbcache/class.php。
( )(判断)
5)推荐变量过滤处理数字型变量可以用(int)或intval函数处理,带小数点的数字型变量可以用(float)或floatval函数处理()(判断)
第 1 页共1 页。
帝国cms内容页根据关键词来调⽤相关内容帝国cms 内容页根据关键词来调⽤相关内容,如果没有相关内容则随机获得⽂章代码:<?phpif ($navinfor['keyboard']){$c_key=explode(',',$navinfor['keyboard']);$count=count($c_key);for($i=0;$i<$count;$i++){if($i==0){$or='';}else{$or=' or ';}$repadd.=$or."keyboard like '%".$c_key[$i]."%'";}$r=$empire->fetch1("select * from {$dbtbpre}ecms_news where id<>".$navinfor['id']." and ".$repadd." order by newstime desc limit 1");if($r[title]){$mesql=$empire->query("select titleurl,title,newstime from {$dbtbpre}ecms_news where id<>".$navinfor['id']." and ".$repadd." order by newstime desc limit 10"); while($or=$empire->fetch($mesql)){$newstime=date('Y-m-d',$or[newstime]);><li><a href="<?=$or[titleurl]?>"><?=$or[title]?></a><span><?=$newstime?></span></li><?}}else{$mesql2=$empire->query("select * from {$dbtbpre}ecms_news where id<>".$navinfor['id']." order by rand() desc limit 10");while($r2=$empire->fetch($mesql2)){$newstime=date('Y-m-d',$o2[newstime]);><li><a href="<?=$r2[titleurl]?>"><?=$r2[title]?></a><span><?=$newstime?></span></li><?}}}else{$mesql2=$empire->query("select titleurl,title,newstime from {$dbtbpre}ecms_news order by rand() desc limit 10");while($r2=$empire->fetch($mesql2)){$newstime=date('Y-m-d',$r2[newstime]);><li><a href="<?=$r2[titleurl]?>"><?=$r2[title]?></a><span><?=$newstime?></span></li><?}}>如修改⽂章条数的话,把limit后⾯的数字改⼀下就好了。
在上一讲中,我们已经制作了一个列表页,但是所有的内容,并没有最终页的模板,这一次我们大家将共同制作一个最终页模板,如下图所示:看到此模板的时候,我们发现了一个问题,什么问题呢?1.头部:这个关部好像我们作过了。
2.左侧:我们也在列表页的时候作过了。
3.右侧,这个我们没有作过。
需要制作一下了。
4.底部:这个也作过了。
我们分析发现,这个我们除了右边之外,都已经作过了。
都是在首页的时候作过了。
接下来我们建立模板,叫“正文页”,单击“正文页”进入模板编辑。
我们把我们最终页的源代码复制进来,如下图所示:第一步:把以前已经作过的区块替换到这个最终页上。
我们还是跟以前一样,选中要编辑的html代码,这次不是新建区块了,而是插入区块,因为我们已经有了。
出现如下界面:找到我们的“正文页”,区块选择相应的即可。
把“头部”、“左侧”、“底部”都替换成区块,如下图:注:为了方便我们查看效果,使用“单击查看效果”按钮功能,我们也需要在“正文页”这一行上,单击右键,选择如下图所示:填入我们公司动态的栏目ID和它里面的一个新闻ID。
这样我们就可以看到效果了。
注:如不知道栏目ID和新闻ID,请参看“第一讲”这样我们就已经把已经存在的区块替换完成了。
第二步:我们显示最终新闻内容。
此时我们可以把上一篇和下一篇单独放到另二个区块里面,为什么是二个呢?原因:一个新闻的上一篇是添加新的之前就已经存在的。
但是下一篇就不是了,是之后才添加的,因为是静态页面,已经生成了?还需要生成上一个文章吗?如何反复太麻烦,所以我们要把他们分开,一会讲到分开是如何实现的。
现在我们先输出最终页的内容。
1.建立最终内容区块。
再次选中,右键:如下图所示:数据模型:我们选择“新闻”,因为栏目都是绑定的“新闻”模型,当然有其它的时候。
需要其它的模板支持。
条件设置:因为我们要显示新闻最终页。
也就是条件为:即新闻的ID,等于绑定这个最终正文页的新闻的ID。
单击“添加”,把它添加进去。
帝国CMS7.0功能介绍:制作专题更简单-电脑资料帝国CMS7.0在架构上有了比较大的升级,继前两篇预告《》、《》后再次介绍了新架构的强大功能:帝国CMS7.0新增无限评论主表分表功能,使评论数据容量更大,效率更高,因为是评论主表直接分表,所以理论上是无限容量,。
当评论数据达到一定数据量,便可启用新分表,使评论容量分配更合理,效率更高更稳定。
至此,强劲构架升级已介绍完毕,后续将是功能方面更新的介绍。
帝国CMS7.0版本对专题功能进行了大更新,功能更强大,制作更方便:1、专题信息独立表(与信息表分离),管理与查询信息效率更高,电脑资料《帝国CMS7.0功能介绍:制作专题更简单》(https://www.)。
2、支持将专题分配给独立管理员管理,在多用户情况下,方便管理各自专题,权限分配更合理。
3、专题支持新增下级子分类,制作子页面更方便直接。
专题子类支持列表式和内容式两种页面方式,且直接生成静态页面。
4、支持批量将信息推送到专题或专题子类,推送至专题更方便。
5、支持独立管理专题信息功能,可将信息从专题移除、更改发布时间来调整信息显示顺序。
6、专题信息支持九级推荐与调用,支持批量转移至新子类。
7、专题支持独立评论功能,不用像原来版本借信息的评论地址,更方便。
8、专题新增上传各类附件的独立功能,上传专题相关文件更方便。
9、专题更新独立管理页面,更直观(分配权限的管理员均可管理)。
10、组合专题功能:查询信息批量转入专题,可选排除选中的信息或者只组合选中信息,组合方式更灵活。
11、新增“灵动标签式”调用专题信息功能,调用信息超级方便。
12、新版专题支持多表信息显示与调用。
帝国CMS7.0专题功能更强大、制作更方便。