找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1861|回复: 0

[分享] 织梦后台添加顶级栏目背后原理详解

[复制链接]
发表于 2018-3-20 13:42:25 | 显示全部楼层 |阅读模式 来自 中国–河南–新乡–牧野区
这个教程讲解当我们在后台添加顶级栏目的时候,织梦程序到底做了什么?我们写上栏目及栏目一些参数后,点击保存,为什么他会自动加到前台的栏目上面,当我们在点击保存时,织梦又对程序做了什么?我们详细分析这些后,对于我们以后织梦二次开发很帮助。

  用到的知识:1.<form></form>表单知识;2.数据库查询语言select,insert,update,delete等;3.php知识;4.mysql数据库知识;5.html,css,js,jquery等。

  织梦收集数据都是用表单form来收集,然后,把收集的数据通过表单,传给对应的php文件,再通过这个php文件里面的insert into数据库语言,插入到数据库存在起来。添加顶级栏目对应的php程序文件和模板文件分别是/dede/catalog_add.php和/dede/catalog_add.htm。

  以下是当我们点击保存按扭后程序在后台做的一系列操作。
1.webp


  下面详细分析源码。

  下图是点击“添加顶级栏目”后看到的界面,
2.webp
  

  这个界面对应的模板文件是catalog_add.htm,模板文件位置在根目录dede(如果你的后台名没有改的话),我们打开这个模板文件,找到<form></form>表单,你会发现,这个表单就是上面的图里面的内容,包括“高级选项”和“栏目内容”里面的内容。

  这里对数据收集作一个小小的总结,织梦对数据收集都是用form表单进行的,都是通过表单对应的php传到数据库保存的,不仅在织梦里面,在其它cms系统或程序中都是用表单进行收集,再能过php把数据插入到数据库里面,我们最熟悉的百度,谷哥等搜索引擎都用的是form表单,当我们把关键词输入到搜索框内后,点击查询,这个过程,跟我们添加栏目过程类似,只不过这里是从数据里面把东西查询出来,而添加栏目则只是把数据插入到数据库里面。所以,表单很重要,这里就对html表单作了解。

  form表单格式:<form action=""><input type="submit" value="发送"><input type="reset" value="重置"></form>
  这是最简单的格式,在表单中action是必须的,后面的按扭可以是文字,也是以是图片,如<input name="imageField" type="image" src="images/button_ok.gif"/>;如果我们是上传附件的表单,那么,在<form action="" enctype="multipart/form-data">里面enctype="multipart/form-data"是必须的,它的作用是设置表单的MIME编码。以后,我们会详细讲解表单知识,如果您是新手,最好先学习一下html教程。

  现在让我们看一下,在收集到用户提交的数据后,catalog_add.php文件是如何处理这些数据的呢?在这个文件中,首先引入二个文件,然后,对catalog_add.htm模板里面的表单收集到的数据进行初始化,接下来决断一下,是“添加顶级栏目”还是“批量添加顶级栏目”,实际上catalog_add.htm应对的是“添加顶级栏目”,而catalog_add_quick.htm对应的则是“批量添加顶级栏目”。

  在这个function action_save()函数后,有一个判断else if($dopost=='save'),这句话很重要,直接决定了你的操作是“添加顶级栏目”,这个判断与catalog_add.htm模板里面表单里面的<input type="hidden" name="dopost" value="save" />这句对应,正是这个把文件catalog_add.php和catalog_add.htm联系起来,实现数据插入数据库里面。

  在这个function action_save()函数里面,那句insert into是最重要的一句,就是插入数据库功能。

  现在我们对模板文件再简单分析一下,这个模板里面在头部引入一个js函数
  1. function checkSubmit()
  2. {
  3.    if(document.form1.typename.value==""){
  4.           alert("栏目名称不能为空!");
  5.           document.form1.typename.focus();
  6.           return false;
  7.      }
  8.      return true;
  9. }
复制代码


  它的作用就是当我们没的或忘记写“栏目名称”,点击提交,会有一个提示框,显示“栏目名称不能为空”,就是用的这个函数,这个特效是在表单<form name="form1" action="catalog_add.php" method="post" onSubmit="return checkSubmit();">里面的onSubmit="return checkSubmit()"脚本来触发checkSubmit()这个js函数。

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-11-27 12:02 , Processed in 0.047771 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表