PHPCMSv9小技巧之三:排行栏显示指定栏目ID的热门文章
一、显示当前栏目的热门文章。
标签为:{pc:content action="hits" catid="$catid" num="10" order="views DESC" cache="3600"}修改文件:\phpcms\modules\content\classes\content_tag.class.php (注意备份,主要修改里面的hits 标签函数)
查找:$this->db->table_name = $this->tablename; 在该代码上面添加:if($catid && $ids && $this->category[$catid]['child']) {
$catids_str = $this->category[$catid]['arrchildid'];
$pos = strpos($catids_str,',')+1;
$catids_str = substr($catids_str, $pos);
$sql .= " AND `catid` IN ($catids_str)";
} elseif($catid && $ids && !$this->category[$catid]['child']) {
$sql .= " AND `catid` = '$catid'";
}
以上为hits标签的修改,加上栏目查询了。 更新全部缓存,完毕!
修改完后,还可添加参数来判断是否开启,更加灵活。
例如调用标签为:{pc:content action="hits" catid="$catid" num="10"dangqian="1" order="views DESC" cache="3600"}蓝色部分为添加的自定义参数,然后修改上面代码为:if($data['dangqian']){
《上面的代码》
}
这样就增加开关了,当hits标签带参数 dangqian="1" 时则为当前栏目的排行。catid="$catid" 这个需要赋值才能显示那个栏目的。
加个开关可以用在列表, 一个标签调用本栏目排行,一个标签调用总排行。
二、指定某几个栏目ID的热门文章:
可独立修改,也可跟第一种方法共存,但必须加上开关,而且dangqian="1" 跟 catids="7,8,9" 两个参数不能同时出现在一个hits标签。
修改文件一样,\phpcms\modules\content\classes\content_tag.class.php
查找:$this->db->table_name = $this->tablename; 在该代码上面添加:if(isset($data['catids'])){
$catids = $data['catids'];
$sql .= " AND catid IN ($catids) ";
}
调用标签为:{pc:content action="hits" catid="7" catids="7,8" num="10" order="views DESC" cache="3600"}
1. 红色部分为新增加的参数catids,多个栏目ID用半角逗号,隔开,如:catids="7,8,10,12,13,14" 不需要指定多栏目可以删除参数,不影响正常标签使用。
2. 蓝色部分必须,如果指定多栏目,则填其中一个栏目ID。