找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 610|回复: 0

织梦DEDECMS模板网站文章模型发布过程解析

[复制链接]
发表于 2012-4-18 10:45:26 | 显示全部楼层 |阅读模式
织梦DedeCMS模板网站文章模型发布过程解析:
很多从事二次开发的新手不知道从什么地方动手,首先第一步要分析代码,第一步是测试。只有分析了过程才更有利做开发。这里我们整理了一下dedecms文章发布的过程:
首先,是发布文章的文件:article_add.php;
article_add.php通过article_add.htm表单获取要发布的文章内容及各个文章属性参数,并对这些参数进行函数处理。
然后通过调用include下面的archives.func.php里面的GetIndexKey函数,在微表(其实这才是主表)dede__arctiny中插入一条数据,也即从此获得了该文章的在整个网站内的唯一标识id(此字段是自增的),并被引用到文章的属性表--主表dede_archives中,同时文章的具体内容则存放在了附加表dede_addonarticle中,此时被引用的id标识字段是aid.
【对于自定义模型,可以选择不使用主表dede_archives,则在附加表里面建立最基本的属性】


其它类型的数据大致如此。
织梦dedecms模板就是用这个唯一标识一根红线将各种表现、查询串接了起来。


   
        
            
            
            
            
                //生成文档ID
                 $arcID = GetIndexKey($arcrank,$typeid,$sortrank,$channelid,$senddate,$adminid);
            
            
            
        
   




   
        
            
            
            
            
                function GetIndexKey($arcrank,$typeid,$sortrank=0,$channelid=1,$senddate=0,$mid=1)
                {
                 global $dsql,$senddate,$typeid2;
                 if(empty($typeid2)) $typeid2 = 0;
                 if(empty($senddate)) $senddate = time();
                 if(empty($sortrank)) $sortrank = $senddate;
                 $iquery = "
                   INSERT INTO `dede_arctiny` (`arcrank`,`typeid`,`typeid2`,`channel`,`senddate`, `sortrank`, `mid`)
                   VALUES ('$arcrank','$typeid','$typeid2' , '$channelid','$senddate', '$sortrank', '$mid') ";
                 $dsql->ExecuteNoneQuery($iquery);
                 $aid = $dsql->GetLastID();
                 return $aid;
                }
            
            
            
        
   




   
        
            
            
            
                 
                 //保存到主表
                 $query = "INSERT INTO `dede_archives`(id,typeid,typeid2,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,
                    color,writer,source,litpic,pubdate,senddate,mid,notpost,description,keywords,filename,dutyadmin,weight)
                    VALUES ('$arcID','$typeid','$typeid2','$sortrank','$flag','$ismake','$channelid','$arcrank','$click','$money',
                    '$title','$shorttitle','$color','$writer','$source','$litpic','$pubdate','$senddate',
                    '$adminid','$notpost','$description','$keywords','$filename','$adminid','$weight');";
                 if(!$dsql->ExecuteNoneQuery($query))
                 {
                  $gerr = $dsql->GetError();
                  $dsql->ExecuteNoneQuery("Delete From `dede_arctiny` where id='$arcID'");
                  ShowMsg("把数据保存到数据库主表 `dede_archives` 时出错,请把相关信息提交给DedeCms官方。".str_replace('"','',$gerr),"java script:;");
                  exit();
                 }
                 //保存到附加表
                 $cts = $dsql->GetOne("Select addtable From `dede_channeltype` where id='$channelid' ");
                 $addtable = trim($cts['addtable']);
                 if(empty($addtable))
                 {
                  $dsql->ExecuteNoneQuery("Delete From `dede_archives` where id='$arcID'");
                  $dsql->ExecuteNoneQuery("Delete From `dede_arctiny` where id='$arcID'");
                  ShowMsg("没找到当前模型[{$channelid}]的主表信息,无法完成操作!。","java script:;");
                  exit();
                 }
                 $useip = GetIP();
                 $templet = empty($templet) ? '' : $templet;
                 $query = "INSERT INTO `{$addtable}`(aid,typeid,redirecturl,templet,userip,body{$inadd_f}) Values('$arcID','$typeid','$redirecturl','$templet','$useip','$body'{$inadd_v})";
                 if(!$dsql->ExecuteNoneQuery($query))
                 {
                  $gerr = $dsql->GetError();
                  $dsql->ExecuteNoneQuery("Delete From `dede_archives` where id='$arcID'");
                  $dsql->ExecuteNoneQuery("Delete From `dede_arctiny` where id='$arcID'");
                  ShowMsg("把数据保存到数据库附加表 `{$addtable}` 时出错,请把相关信息提交给DedeCms官方。".str_replace('"','',$gerr),"java script:;");
                  exit();
                 }
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|要学吧论坛

GMT+8, 2026-1-24 01:11 , Processed in 0.093096 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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