diff --git a/README.MD b/README.MD index a41b7c8..9745e40 100644 --- a/README.MD +++ b/README.MD @@ -65,4 +65,5 @@ - 1.2.2 - 增加侧边栏显示的全局开关 - - 修复代码块中的短代码解析问题 \ No newline at end of file + - 修复代码块中的短代码解析问题 + - 新增一个随机文章阅读的独立页面 \ No newline at end of file diff --git a/page-random.php b/page-random.php new file mode 100644 index 0000000..0385412 --- /dev/null +++ b/page-random.php @@ -0,0 +1,43 @@ +select('COUNT(*) AS count') + ->from('table.contents') + ->where('status = ?', 'publish') + ->where('type = ?', 'post') + ->where('created <= ?', time()); +$countResult = $db->fetchRow($countSql); +$total = $countResult['count']; + +if ($total > 0) { + // 随机选择一个偏移量 + $offset = mt_rand(0, $total - 1); + + // 根据偏移量获取一篇文章 + $sql = $db->select() + ->from('table.contents') + ->where('status = ?', 'publish') + ->where('type = ?', 'post') + ->where('created <= ?', time()) + ->limit(1) + ->offset($offset); + + $result = $db->fetchRow($sql); + + if (!empty($result)) { + $target = Typecho_Widget::widget('Widget_Abstract_Contents')->filter($result); + $this->response->redirect($target['permalink'], 307); + } +} + +// 如果没有找到文章,重定向到首页 +$this->response->redirect($this->options->siteUrl, 307); +?> \ No newline at end of file