一般来说,个人博客可能很少考虑今天这个问题,那就是调用同分类下的热门文章,我们通常看到typecho的主题都是调用热门文章,这个热门文章是指所有分类的,那么对于一个网站是综合类型的,并且每个分类内容差异很大的话,这样的显示方式显然不够友好,从SEO角度来看,这样的内容相关性也会大打折扣,因此,我们需要在文章页面分类那里显示同分类下的最热门文章显示。
具体的实现代码参考如下:
class Widget_Hot_Post_By_Category 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数据库
$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('table.contents.views', Typecho_Db::SORT_DESC);
$this->db->fetchAll($select, array($this, 'push'));
}
}
当我们的主题需要调用同分类热门文章的时候,只需要在主题模板处使用下面代码:
<?php $this->widget('Widget_Hot_Post_By_Category@hot', 'pageSize=6')->to($hot); ?>
<?php while($hot->next()): ?>
文章链接:<?php $hot->permalink() ?>
文章标题:<?php $hot->title(); ?>
<?php endwhile; ?>
Typecho实现同分类下热门文章的查找并不难,主要就是使用数据库查询同分类下,浏览量最多的那篇文章就可以了。通过这一点我们也可以查询同分类下评论最多的文章等等,可以根据自己的想法去扩展实现更多功能。
原创文章,作者:努力的牛奋,如若转载,请注明出处:https://mokev.com/6.html