分析织梦后台添加文档功能,dedecms
导读:dedecmsdedecms当我们在织梦后台建立栏目后,在这个栏目下面点击添加文档,会列出一个界面(实际上是一个表单),然后添加内容,点击保存,文章(这里以文章模型为例子,其它的模型功能实dede58模板。
当我们在织梦后台建立栏目后,在这个栏目下面点击“添加文档”,会列出一个界面(实际上是一个表单),然后添加内容,点击保存,文章(这里以文章模型为例dede模板安装子,其它的模型功能实现类似)就发布了,今天就分析这一系列功能织梦是如何实现的。 用到的文件:catalog_do.php,content_list.php,content_list.htm,article_add.php,article_add.htm,article_add.php,article_add.htm 用到的数据库表:dede_channeltype,dede_arctype 看似简单,我们用鼠标点二次,就可以发布一篇文章,其实,用到的知识非常多,有php知识、数据库知识、javalscript(包括jquery框架)、css、html等知识,虽然,简单的二个鼠标操作,但是用到了几乎所有的网站建设的知识,如果我们把这个流程分析透彻,那么,对织梦特别是二次开发,会有很大帮助,而且可举一反三,虽然,这次分析的是一个文章模型,但大同小异,下面就让我们开始分析吧。 添加栏目后(我提前添加了一些文章,作为备用)会进入到如下图所示。 这个界面用到的模板是content_list.htm,界面对应的程序是content_list.php,因为今天我们分析“添加文档”功能,所以,content_list.php这个文件今天用不到,但是这个引入的模板文件content_list.htm我们要用到,我们打开这个模板文件,大约在22行,找到如下这样一段代码<input type='button' class="coolbg np" onClick="location='catalog_do.php?channelid={dede:global.channelid/}&cid={dede:global.cid/}&dopost=addArchives';" value='添加文档' />,我们重点看这段代码里面这一段catalog_do.php?channelid={dede:global.channelid/}&cid={dede:global.cid/}&dopost=addArchives,这一段里面的catalog_do.php文件是重点,这个php文件,是通过后面的条件,来 判断添加的文档是哪个模型,哪个栏目,并在catalog.do.php程序文件里面调用出相应的发布表单。 我们打开catalog_do.php这个文件,找到下面的段代码,如图所示。 找到if($dopost=="addArchives"),这个判断,里面的$dopost=="addArchives"与上面的catalog_do.php?channelid={dede:global.channelid/}&cid={dede:global.cid/}&dopost=addArchives最后那个条件dopost=addArchives,是不是相对应?是的,正是通过这个条件,跟这个判断,使catalog_do.php文件和content_list.htm模板文件关联起来,这是重点,也是织梦二次开发重点知识,不仅是织梦,其它cms也是这样应用的。 接下来,我们详细看一下增加文档这个函数function addArchives(),通过条件dopost=addArchives,我们进入到catalog_do.php文件后,程序就找到了函数function addArchives(),然后,程序判断如果是模型没有指定并且栏目也没有指定(这种情况是有的,如我们在后台左边菜单导航里面的“我发布的文档”,程序就是没有指定模型id和栏目id)时,点“添加文档”后,通过这段代码header("location:article_add.php"),调用调用默认文章调用发布表单;接下来假设模型id不空时,程序会通dede模板堂过查询数据库表dede_channeltype,查出一条记录并赋给变量$row,再通过这个段代码$gurl = $row["addcon"],取出对应的addcon的值赋给$gurl,这样我们可以通过重新定位功能代码header("location:{$gurl}?channelid={$channelid}&cid={$cid}"),来达到和前面的header("location:article_add.php")这句的功能,只不过在这次后面加上了二个条件而已。 我们看一下数据库表dede_channeltype里面对应的字段addcon就是添加文章、图片集,分类信息,软件等的添加处理程序,由此我们不难发现,只要我们把addcon的值取出来,再通过header定位功能,就可以实现当我们点击“添加文档”时,转到对应的内容的添加界面。 第三个判断,当模型id和栏目id都存在时,这次,只用数据库表dede_channeltype这个是不行的,因为,这个表里面没有字段cid,这个字段在数据库表dede_arctype这个里面,现在问题是我们要取到addcon的值,但表dede_arctype这里面又没有,而这个表又用到,怎么办呢?只能把这二个表用select 里面的左拼接查询出来,这个也简单。就是用的这句查询功能SELECT ch.addcon FROM `dede_arctype` tp LEFT JOIN `dede_channeltype` ch ON ch.id=tp.channeltype WHERE tp.id='$cid' ,如果有兴趣的可以研究一下。学过数据库的这个一看就明白,这样我们又把第三种情况对应的addcon值也查询出来的。这样对应的发布表单也调出来了。 接下来我们进入了“发布文章”界面(这里以第三种情况,即有模型id也有栏目id为例子),如下图所示。
声明: 本文由我的SEOUC技术文章主页发布于:2023-07-20 ,文章分析织梦后台添加文档功能,dedecms主要讲述后台,标签,织梦网站建设源码以及服务器配置搭建相关技术文章。转载请保留链接: https://www.seouc.com/article/web_31508.html