通常而言我们站点的文章内容是根据发布时间来展示的,最新发布的文章在前面展示。可是有部分站点的要求不一样,例如一些资源站,特别是一些美图的资源站点,它们会发布一些资源合集,当资源更新的时候,它就需要把有更新资源的页面在前面展示,因此就会用到Typecho根据文章修改时间来显示功能了,为此我特地的搜索了一下Typecho中关于文章排序的问题,总结出以下的一些排序经验,大家可以根据自己的需求来修改。
1.将前台文章列表改为按修改时间排序
修改var/Widget/Archive.php的1399行,将$select->order('table.contents.created', Typecho_Db::SORT_DESC)中的created改为modified。
2.将后台的文章管理列表改为按修改时间排序
修改var/Widget/Contents/Post/Admin.php的176行,将$select->order('table.contents.created', Typecho_Db::SORT_DESC)中的created改为modified。
3.将后台文章列表中文章的时间由创建时间改为修改时间
修改admin/manage-posts.php的149行<?php $posts->dateWord(); ?>
改为<?php $modifyDate = new Typecho_Date($posts->modified); ?>
<?php echo $modifyDate->word(); ?>
4.保存文章后每次都回到列表页的第一页
修改var/Widget/Contents/Post/Edit.php的761行$this->response->redirect(Typecho_Common::url('manage-posts.php?' . $pageQuery, $this->options->adminUrl));
改为$this->response->redirect(Typecho_Common::url('manage-posts.php?page=1', $this->options->adminUrl));
上面的是针对使用默认主题显示的修改,如果是调用系统默认方法的主题模版,修改后就会生效,对于一些主题可能自己已经写过相关代码的,那就要根据主题的代码逻辑进行相应的改动,关键点就是搜索结果排序的时候,要将排序时间从创建时间改为修改时间就可以了。这部分知识也是之前提到过的对Typecho数据库操作一定要熟悉,这个点是所有获取数据内容的核心逻辑,把这部分内容掌握了就可以写出千变万化的效果了。