欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

dedecms  pubdate  senddate  sortrank 区别

shiping1 的头像

pubdate:发布时间(前台可更改)  好像前台默认是pubdate倒序的
            让它进行时间倒序
{dede:arclist}和 {dede:list}都是如此的

pubdate:发布时间(前台可更改)  在后台如果改一下它 那么 pubdate 和 sortrank 同时更改
senddate:入库时间  (就是录入时间) 第一次增加这个文章时的时间 理论上后台是不可以修改的
sortrank:前台调用最新文章。实际上是用这个时间。
select sortrank,pubdate , senddate  from dede_archives where id=721
1351143848 1351143848 1350999351
当更改之后 ,sortrank,pubdate两者相等,senddate(录入时间)是不变的


首先要知道一个文章有三个时间。
对应的是数据库的dede_archives表,请根据你的实际情况更换前缀。
这个表里有三个表示时间的字段:
pubdate:发布时间(前台可更改)
senddate:入库时间  
sortrank:前台调用最新文章。实际上是用这个时间。

我采集的文章不知道什么原因,入库后都是2021年的。后面手工增加的2009年的文章。
在首页等地方用pubdate排序方式都只能调出采集的2021年文章,
通过PHPMYADMIN查看发现有以上三个字段。
注意:里面的数值不是直观的。
如不是2009-01-13 14:13:32而是1231846313
所以我们在批量替换的时候要这么做。
第一步。在后台新增一个文章。
得到一个时间,比如2009-01-13 14:13:32,这可以通过管理文章那里看到。
第二步,后台执行SQL语句SELECT * FROM  dede_archives order by id DESC limit 1
这样你可以看到你刚才新加加的文章一所有字段值。
观察以下的数据:
pubdate:1231846313
senddate:1231846313
sortrank:1231846313
其中1231846313就是时间数据了。
然后就是替换了。
UPDATE dede_archives SET sortrank = 1231846313;
UPDATE dede_archives SET senddate = 1231846313;


UPDATE dede_archives SET pubdate = 1231846313;

 

 

DEDECMS发布时间为1970年1月1日的解决方法(2)

 
观察以下的数据:

  pubdate:1231846313

  senddate:1231846313

  sortrank:1231846313

  其中1231846313就是时间数据了。

  然后就是替换了。

  UPDATE dede_archives SET sortrank = 1231846313;

  UPDATE dede_archives SET senddate = 1231846313;

  UPDATE dede_archives SET pubdate = 1231846313;

  首先,看到第一句话应该就可以pass他了,下面具体说说,他这个方法的问题在哪里(注:这种执行sql语句,或者需要修改数据库的一定先备份数据库)。

  对应的是数据库的dede_archives表,请根据你的实际情况更换前缀。

  这个表里有三个表示时间的字段:

  pubdate:发布时间(前台可更改)

  senddate:入库时间

  sortrank:前台调用最新文章。实际上是用这个时间。

  这段说的是没有问题的,我再详细的说下:

  1.pubdate:发布时间(前台可更改)

  在发布新文章或编辑文章时,可在高级参数里看到,可以更改。也是系统在内容页及列表页调用的时间。当发布时间为1970时,列表页会显示 1970-01-01,而文章页获取的发布时间则为“暂无”,当然这个以dede默认模板为准,如果你修改了可能会有其他结果。如:我的待审核文章审核发 布时会自动更新为当前系统时间(如果不会设置,看Dedecms未审核文档自动更新发布时间)

  2.senddate:入库时间

  根据字面意思即可理解,但是所谓的入库时间体现在哪里?就是dede后台档案列表中的“录入时间”,理论上dede后台无法修改,但实际也可以 执行sql语句修改,并无实际意义。如果你的文章命名规则为“{typedir}/{Y}/{M}{D}/{aid}.html”的话,也直观的提现在你 文章页的url中。

  3.sortrank:前台调用最新文章。实际上是用这个时间。

  这个时间我们一般看不到,但是前台模板设置为“orderby=’public’的话,系统就是按照这个时间来调用的。说了一大堆只是在强调这些细节,也算是讲讲原理吧。

  其次,我们应该了解,即使是火车头采集,或者dede采集,pubdate、senddate、sortrank这三个时间也不可能完全一致, 所以这里也有点问题,但是无伤大雅,最终要的在于,这个方案是修改了整个系统的数据库pubdate、senddate、sortrank的三个时间段, 也就是说,从你发的第一篇文章,到最后一篇,都会变成你现在修改的这个时间,我第一次修改之后,整站的文章都成了3月19日发布的,可以说几乎所有的东西 都乱了,这个大家应该能想明白,所以,我说备份很重要,转载这篇文章的人,确实很害人。这种方法我觉得没有什么可取的,完全用不上的。

  二、正确的解决1970的方案

  火车头采集发布时唯一不会错的就是系统录入时间,所以,我们以这个为标准,将public及sortrank时间改为senddate(声明 下,先备份,后操作)。同时,网站采集比较多的考虑下,是不是有些文章的发布时间与入库时间相差很大?如3-19采集了很多篇,发布为待审核,通过插件控 制每天自动更新,4-19才更新完,如果你执行两条命令的话,那原来审核最晚的那些文章也会变成3-19日发布,不过你可以选择只执行一条命令。)

  如果你不介意上面我说的,确实需要解决1970的问题的话,在dede后台-系统-sql命令行工具,执行以下命令:

  UPDATE dede_archives SET sortrank = senddate ;

  这条命令是将前台调用时间也改成入库时间,如果你是我上面提到的那种,就不要执行了,至于1970还会不会有其他影响,自己斟酌

  UPDATE dede_archives SET pubdate = senddate ;

  这条命令是将发布时间改为入库时间,就不解释了,上面都说了

来自 http://www.veryhuo.com/a/view/35582_2.html

实际上修改模板就可以达到发布文章和采集都是使用的默认动态显示。
album_add.htm 发表图集模板
archives_add.htm 发表通用文档模板
article_add.htm 发表普通模板
archives_sg_add.htm 发表特殊类文章模板


想要默认动态浏览只要修改对应的主要模板就可以,在../dede/templets/文件下。
将要发布的文章类型的模板代码改下就可以实现以后发布文章就是动态显示,不用在一个一个修改,实现默认动态浏览。
将代码:<input name="ishtml" type="radio" class="np" value="1" checked="checked" />
              生成HTML
              <input type="radio" name="ishtml" class="np" value="0" />
              仅动态浏览

改为:<input name="ishtml" type="radio" class="np" value="1" />
              生成HTML
              <input type="radio" name="ishtml" class="np" value="0" checked="checked" />
              仅动态浏览

若发布的是普通一般的文章,该article_add.htm下的代码就可以。如果你想将所有的发布都是动态浏览,就将对应的模板改下代码:
album_add.htm 发表图集模板
archives_add.htm 发表通用文档模板
article_add.htm 发表普通模板
archives_sg_add.htm 发表特殊类文章模板


这些模板的代码都该下。要有根据的改,才能将对应发布的信息内容实现动态浏览。
我的摸索给大家分享下(我是:深海中的游鱼)QQ:250873353 !

 

普通分类: