首页 » 建站手册 » Typecho增加随机文章功能

Typecho增加随机文章功能

谷歌已收录,更新于2019年07月04日; 如遇到问题,请留言及时通知站长; 欢迎加入 三生三世,讨论各种问题!

刚发完热门文章,就有人让再提取下随机文章,然后站长就提取,然后测试代码可靠性,再修改错误,完成后,立马将代码发了出来。不过,本站不搞随机文章,所以有关css代码部分,直接copy上篇教程,做了点修改。同时,function.php代码也只是保证了能用,如果各位要使用这段代码,最好修改下echo中的代码显示,为了更好的配合各位的css文件。

function.php代码

打开主题的function.php文件,在第二行或者最后一行添加如下代码。

function returnRandomPosts($random){
        $modified = $random->modified;
        $db = Typecho_Db::get();
        $adapterName = $db->getAdapterName();//兼容非MySQL数据库
        if($adapterName == 'pgsql' || $adapterName == 'Pdo_Pgsql' || $adapterName == 'Pdo_SQLite' || $adapterName == 'SQLite'){
            $order_by = 'RANDOM()';
        }else{
            $order_by = 'RAND()';
        }
        $sql = $db->select()->from('table.contents')
            ->where('status = ?','publish')
            ->where('table.contents.created <= ?', time())
            ->where('type = ?', 'post')
            ->limit(5)
            ->order($order_by);

        $result = $db->fetchAll($sql);
        $index = 0;
        $isShowImage = true;
        if (count($options->indexsetup)>0 && in_array('notShowRightSideThumb',$options->indexsetup)){
            $isShowImage = false;
        }
        foreach($result as $val){
            $val = Typecho_Widget::widget('Widget_Abstract_Contents')->filter($val);
            echo '<li class="list-group-item">
                <div class="clear">
                    <h4 class="h5 l-h"> <a href="' . $val['permalink'] . '" title="' . $val['title'] . '"> ' . $val['title'] . ' </a></h4>
                    <small class="text-muted post-head-icon">
                    <span class="meta-views"> <i class="iconfont icon-comments-o" aria-hidden="true"></i> <span class="sr-only">评论数:</span> <span class="meta-value">'.$val['commentsNum'].'</span>
                    </span>
                    <span class="meta-date m-l-sm"> <i class="fontello fontello-eye" aria-hidden="true"></i> <span class="sr-only">浏览次数:</span> <span class="meta-value">'.$val['views'].'</span>
                    </span>
                    </small>
                    </div>
            </li>';
            $index ++;
        }
    }

然后在你想要显示随机文章的地方插入如下代码,比如footer.php

typecho预览

footer.php代码

<div class="rand"><h3>随机文章</h3><?php returnRandomPosts($this);?></div>

css代码

css这里站长就不写了,或者不重写啦,直接把上篇热门文章的css拿过来了。本站目前不搞随机文章,不过以上php代码是站长修改后测试完才发出来的。

.rand {
    overflow: auto;
    position: fixed;
    top: 3.2em;
    right: 0;
    padding: 1em;
    border-left: 1px solid #ccc;
    width: 15em;
    opacity: 0;
    visibility: hidden
}
@media screen and (min-width:1350px) {
    .rand {
        opacity: 1;
        visibility: visible
    }
}
.rand h3 {
    margin-top: 1em;
    text-align: center
}
body.neon .rand {
    border-left: 1px solid #555
}
.rand {
    -webkit-box-shadow: 0 10px 20px #6f9fc7!important
}
body.neon .rand {
    -webkit-box-shadow: 0 10px 20px #c9861d!important
}
.list-group a {
    color: #555;
}
.list-group:before {
    content: "\f105";
    font-family: FontAwesome;
}

一个只会魔改主题,而不会制作主题的站长,专业扒各种网站的各种样式。希望每一位来到这里的访客,都能拿到你们需要的资源!

发表评论

返回主页看更多
赏杯咖啡给站长 支付宝 扫一扫