越是优秀的网站,在相关文章上就做的越好,大型网站的相关文章一般有自己的云数据,做的更好!
zblogPHP也有自己的相关文章代码:
方法一:这是官方网站wiki里提供的zblogPHP相关文章
搜索$article的相关文章(ZC_RELATEDLIST_COUNT选项默认为10)
$array=GetList($zbp->option[C_RELATEDLIST_COUNT],null,null,null,null,null,array(is_related=>$article->ID));
在模板中,获取并输出获取到的相关文章代码参考如下
{$array=GetList($zbp->option[C_RELATEDLIST_COUNT],null,null,null,null,null,array(is_related=>$article->ID));}<ulid="related">{foreach$arrayas$related}<li><spanclass="time">{$related.Time(m-d)}</span><spanclass="title"><ahref="{$related.Url}"title="{$related.Title}">{$related.Title}</a></span></li>{/foreach}</ul>
如上代码,调用的是基于相同tag标签的文章,越相关排位越靠前,如果本文没有tag标签,则一个相关都调取不出来!
方法二:显示同分类下的其它最新文章:
在官方给出的相关文章,是调用有共同tag标签的文章,但如果文章量少,而每一个tag又没有足够多的文章,或者甚至文章没有tag标签,就无法调出相关文章,此时可以使用调用同分类下的最新文章作为相关文章使用,相关性也比较高!
<ulid="related">{foreachGetList(5,$article.Category.ID)as$related}<li><spanclass="time">{$related.Time(m-d)}</span><spanclass="title"><ahref="{$related.Url}"title="{$related.Title}">{$related.Title}</a></span></li>{/foreach}</ul>
方法三:其它zblogphp开发者写的相关代码
<ul>{$aid=$article.ID}{$tagid=$article.Tags}{$cid=$article.Category.ID}{php}$str=\;$tagrd=array_rand($tagid);if(sizeof($tagid)>0&&($tagid[$tagrd]->Count)>1){$tagi=\%{.$tagrd.}%;$where=array(array(=,log_Status, ),array(like,log_Tag,$tagi),array(<>,log_ID,$aid));}else{$where=array(array(=,log_Status, ),array(=,log_CateID,$cid),array(<>,log_ID,$aid));}switch($zbp->option[C_DATABASE_TYPE]){casemysql:casemysqli:casepdo_mysql:$order=array(RAND()=>\);break;casesqlite:casesqlite3:$order=array(RANDOM()=>\);break;}$array=$zbp->GetArticleList(array(*),$where,$order,array(10),\);{/php}{foreach$arrayas$related}<li><ahref="{$related.Url}"><divclass="img"><imgsrc={ydbaijia_thumbnail($related)}alt="{$related.Title}"></div><p>{$related.Title}</p></a></li>{/foreach}
注:这种调用的方式,兼容性不如官方提供的,所以大家开发者一般做zblog模板的时候还是习惯使用第一种方法,避免出现兼容性问题!
当然,第二种方法也有自己的优点,如果tag存在,则按tag标签相关文章显示,如果相关文章不足,则使用同分类下文章进行补足!