在定制ZBLOG PHP模板的过程中,可能有需要用到调用随机文章和热门文章等解决方法,这里国外主机优惠有看到@唐朝同学博客中有这样的脚本整理。我这边也转载过来,下次有使用的时候再测试实用性,如果有问题在进行更新。
使用方法:
第一、在我们的主题目录中需要创建include.php文件,如果有就直接添加脚本
/**
* 获取文章列表
* @param int $count 数量
* @param null $cate 分类ID
* @param null $auth 用户ID
* @param null $date 日期
* @param null $tags 标签
* @param null $search 搜索关键词
* @param null $order 排序
* @param null $option
* @return array|mixed
*/
function TcgetList($count = 10, $cate = null, $auth = null, $date = null, $tags = null, $search = null, $option = null,$order=null) {
global $zbp;if (!is_array($option)) {
$option = array();
}if (!isset($option[\’only_ontop\’]))
$option[\’only_ontop\’] = false;
if (!isset($option[\’only_not_ontop\’]))
$option[\’only_not_ontop\’] = false;
if (!isset($option[\’has_subcate\’]))
$option[\’has_subcate\’] = false;
if (!isset($option[\’is_related\’]))
$option[\’is_related\’] = false;if ($option[\’is_related\’]) {
$at = $zbp->GetPostByID($option[\’is_related\’]);
$tags = $at->Tags;
if (!$tags)
return array();
$count = $count + 1;
}if ($option[\’only_ontop\’] == true) {
$w[] = array(\’=\’, \’log_IsTop\’, 0);
} elseif ($option[\’only_not_ontop\’] == true) {
$w[] = array(\’=\’, \’log_IsTop\’, 1);
}$w = array();
$w[] = array(\’=\’, \’log_Status\’, 0);$articles = array();
if (!is_null($cate)) {
$category = new Category;
$category = $zbp->GetCategoryByID($cate);if ($category->ID > 0) {
if (!$option[\’has_subcate\’]) {
$w[] = array(\’=\’, \’log_CateID\’, $category->ID);
} else {
$arysubcate = array();
$arysubcate[] = array(\’log_CateID\’, $category->ID);
foreach ($zbp->categorys[$category->ID]->SubCategorys as $subcate) {
$arysubcate[] = array(\’log_CateID\’, $subcate->ID);
}
$w[] = array(\’array\’, $arysubcate);}
}
}if (!is_null($auth)) {
$author = new Member;
$author = $zbp->GetMemberByID($auth);if ($author->ID > 0) {
$w[] = array(\’=\’, \’log_AuthorID\’, $author->ID);
}
}if (!is_null($date)) {
$datetime = strtotime($date);
if ($datetime) {
$datetitle = str_replace(array(\’%y%\’, \’%m%\’), array(date(\’Y\’, $datetime), date(\’n\’, $datetime)), $zbp->lang[\’msg\’][\’year_month\’]);
$w[] = array(\’BETWEEN\’, \’log_PostTime\’, $datetime, strtotime(\’+1 month\’, $datetime));
}
}if (!is_null($tags)) {
$tag = new Tag;
if (is_array($tags)) {
$ta = array();
foreach ($tags as $t) {
$ta[] = array(\’log_Tag\’, \’%{\’ . $t->ID . \’}%\’);
}
$w[] = array(\’array_like\’, $ta);
unset($ta);
} else {
if (is_int($tags)) {
$tag = $zbp->GetTagByID($tags);
} else {
$tag = $zbp->GetTagByAliasOrName($tags);
}
if ($tag->ID > 0) {
$w[] = array(\’LIKE\’, \’log_Tag\’, \’%{\’ . $tag->ID . \’}%\’);
}
}
}if (is_string($search)) {
$search=trim($search);
if ($search!==\’\’) {
$w[] = array(\’search\’, \’log_Content\’, \’log_Intro\’, \’log_Title\’, $search);
}
}if(!empty($order)){
if($order==\’new\’){
$order = array(\’log_PostTime\’=>\’DESC\’);
}
if($order==\’hot\’){
$order = array(\’log_ViewNums\’=>\’DESC\’);
}
if($order==\’comm\’){
$order = array(\’log_CommNums\’=>\’DESC\’);
}
if($order==\’rand\’){
$order = array(\’rand()\’=>\’ \’);
}
}$articles = $zbp->GetArticleList(\’*\’, $w, $order, $count, null, false);
if ($option[\’is_related\’]) {
foreach ($articles as $k => $a) {
if ($a->ID == $option[\’is_related\’])
unset($articles[$k]);
}
if (count($articles) == $count){
array_pop($articles);
}
}return $articles;
}
然后就是在我们需要的界面模板中调用。
A – 随机文章
{$array=TcgetList(10,null,null,null,null,null,null,\’rand\’);}
<ul id=\”related\”>
{foreach $array as $related}
<li><span class=\”time\”>{$related.Time(\’m-d\’)}</span><span class=\”title\”><a href=\”{$related.Url}\” title=\”{$related.Title}\”>{$related.Title}</a></span></li>
{/foreach}
</ul>
随机10篇文章
B – 热门文章
{$array=TcgetList(10,null,null,null,null,null,null,\’hot\’);}
<ul id=\”related\”>
{foreach $array as $related}
<li><span class=\”time\”>{$related.Time(\’m-d\’)}</span><span class=\”title\”><a href=\”{$related.Url}\” title=\”{$related.Title}\”>{$related.Title}</a></span></li>
{/foreach}
</ul>
调用10篇热门文章
C – 热评文章
{$array=TcgetList(10,null,null,null,null,null,null,\’comm\’;}
<ul id=\”related\”>
{foreach $array as $related}
<li><span class=\”time\”>{$related.Time(\’m-d\’)}</span><span class=\”title\”><a href=\”{$related.Url}\” title=\”{$related.Title}\”>{$related.Title}</a></span></li>
{/foreach}
</ul>
调用10篇热评文章。
具体的根据我们实际使用调用就可以。