Typecho随机文章与同分类下随机文章的实现

Typecho 69

在制作Typecho主题时,有的时候会想弄个随机推荐文章的功能,所以我就简单弄了个函数,可以随机输出n篇文章,同时追加一些参数还可以输出当前文章分类下的随机文章,具体如下:函数部分
在主题functions.php文件中添加如下函数。class Widget_Post_tongleisuiji extends Widget_Abstract_Contents { public function __construct($request, $response, $params = NULL) { parent::__construct($request, $response, $params); $this->parameter->setDefault(array('pageSize' => $this->options->commentsListSize, 'parentId' => 0, 'ignoreAuthor' => false)); } public function execute() { $adapterName = $this->db->getAdapterName();//兼容非MySQL数据库 if($adapterName == 'pgsql' || $adapterName == 'Pdo_Pgsql' || $adapterName == 'Pdo_SQLite' || $adapterName == 'SQLite'){ $order_by = 'RANDOM()'; }else{ $order_by = 'RAND()'; } $select = $this->select()->from('table.contents') ->join('table.relationships', 'table.contents.cid = table.relationships.cid'); if($this->parameter->mid>0){ $select->where('table.relationships.mid = ?', $this->parameter->mid); } $select->where('table.contents.cid <> ?', $this->parameter->cid) ->where("table.contents.password IS NULL OR table.contents.password = ''") ->where('table.contents.type = ?', 'post') ->limit($this->parameter->pageSize) ->order($order_by); $this->db->fetchAll($select, array($this, 'push')); } }调用输出
在主题需要的地方调用如下内容即可随机输出多篇文章,样式需要自行美化。<?php $mid='';//此参数为空时为随机文章,为分类mid时则为当前分类下的随机文章 $cid=0;//此参数填写当前文章的cid即可在随机文章时不输出当前文章 $size=5;//随机输出文章的数量 $this->widget('Widget_Post_tongleisuiji@suiji', 'mid='.$mid.'&pageSize='.$size.'&cid='.$cid)->to($to);?> <?php if($to->have()): ?> <?php while($to->next()): ?> <!--文章内容开始--> <?php $to->title(); ?> <?php $to->excerpt(150, '...'); ?> <?php $to->permalink() ?> <!--文章内容结束--> <?php endwhile; ?> <?php endif; ?>拓展内容
在文章页面下,调用这个函数时可以这样填写参数$cid=$this->cid;//这样设置下cid,随机推荐文章时就不会与当前文章重复了 $mid=$this->categories 0 'mid' ;//这样设置函数即可获得文章的第一个分类,然后随机输出这个分类下的文章 $size=5;有的时候我们其他页面和文章页面都是在同一处输出随机文章,此时我们就可以使用if判断来为不同页面输入不同参数,如$mid=''; $cid=0; $size=5; if ($this->is('post')){ $cid=$this->cid; $mid=$this->categories 0 'mid' ; $size=5; }

需要能玩这个游戏的老手机吗?

需要付费找各类手机游戏软件刷机包吗?

微信: lost155805 QQ: 1558050515

添加新评论