在博客文章页面中,如果没有展示“相关文章”,那么对PV来说会造成不少的损失。Wordpress中,相关文章一般有插件提供支持,相关的方式包括:Tag相关、作者相关、分类相关等。
而Typecho中,系统提供了调用相关文章的原生API,但只有两种相关方式:标签(tag)相关和作者相关。
获取当前文章的相关文章,使用的Widget是Widget_Contents_Related

$obj = $this->widget('Widget_Contents_Related');
if($obj->have()){
    while($obj->next()){
        $obj->title();
        ... ...
    }
}else{
    echo '无相关文章';
}
以上例子,$obj的可用字段,可参考《Typecho模板中的archive页面》一文。

Widget_Contents_Related可用参数

  • $limit 获取相关文章的数目。
    $this->widget('Widget_Contents_Related','limit=10')则获取10篇相关文章
  • $type 默认值为 NULL,表示文章的相关方式,只接受 author。当 $type 为 author 时,根据用户显示相关文章;为其他值时,根据标签显示相关文章。

Widget_Contents_Related常见用法

常规用法
widget()方法进行组件初始化,然后使用next()进行迭代。

$this->widget('Widget_Contents_Related')->to($recent);
while($recent->next()):
    ......
endwhile;

快捷用法
通过parse()方法,一行代码完成文章列表输出:

$this->widget('Widget_Contents_Related')->parse('<a href="{permalink}">{title}</a>');
至于有哪些字段可用,可参阅《Typecho模板中的archive页面》一文

另外,还可以在post页面,即从当前文章直接调用


$this->related(5)->to($relatedPosts);
$relatedPosts->parse('<a href="{permalink}">{title}</a>'); 
related($limit,$type=NULL)函数接受两个参数,第一个表示数目,第二个指定关联类型,默认根据标签关联,指定author时表示根绝作者关联。