April 14
Typecho利用自定义页面,随机跳转到某篇文章
文章转自:https://blog.iplayloli.com/redirect-to-random-post.html
当我们的博客文章很多时,无法很直观的展示所有文章给读者,这时候我们可随机给读者显示一篇文章。
下面这个方法也是在网上找的一些教程累积的方法,不需要修改typecho源文件,只需要在主题文件夹下,新建一个php文件,名字自定义,然后把以下代码扔进去:
<?php
/**
* 手气最佳
*
* @package custom
*/
if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
<?php
$db = Typecho_Db::get();
$sql = $db->select('MAX(cid)')->from('table.contents')
->where('status = ?','publish')
->where('type = ?', 'post')
->where('created <= unix_timestamp(now())', 'post');
$result = $db->fetchAll($sql);
$max_id = $result[0]['MAX(`cid`)'];//POST类型数据最大的CID
$sql = $db->select('MIN(cid)')->from('table.contents')
->where('status = ?','publish')
->where('type = ?', 'post')
->where('created <= unix_timestamp(now())', 'post');
$result = $db->fetchAll($sql);
$min_id = $result[0]['MIN(`cid`)'];//POST类型数据最小的CID
$result = NULL;
while($result == NULL) {
$rand_id = mt_rand($min_id,$max_id);
$sql = $db->select()->from('table.contents')
->where('status = ?','publish')
->where('type = ?', 'post')
->where('created <= unix_timestamp(now())', 'post')
->where('cid = ?',$rand_id);
$result = $db->fetchAll($sql);
}
?>
<!--下面就是实现显示跳转到随机文章-->
<?php $target = Typecho_Widget::widget('Widget_Abstract_Contents')->filter($result['0']); ?>
<!--跳转-->
<?php $this->response->redirect($target['permalink'],307); ?>
好了,然后在后要新建一个自定义页面,引用这个php文件即可。
实际效果请看他的博客http://www.hzv5.cn/ 导航栏手气按钮吧
来源:https://qqdie.com/archives/jump-to-an-article.html
:D 少女祈祷中...