由于网站资讯栏目须要增加分类(二级菜单),但我又不想利用phpcms的栏目做这个分类(二级菜单),恰好phpcms框架中有一个种别管理,二话不说,直接在种别管理里面把资讯的几个分类(二级菜单)加上,后台在添加资讯的时候就可以选择资讯所属那个分类(二级菜单)了。
问题来了:phpcms后台种别管理功能是完好的,但是想要在前台利用pc:content的lists标签调用这个分类并查询到对应的资讯数据就有问题了,由于lists标签是不支持这个typeid(种别)数据的,想要利用就须要动手开拓一下phpcms程序了。
首先是利用pc:content调用列表数据的时候怎么能把url中的typeid(种别ID)获取到,利用下面的一段代码就可以获取到url中的typeid参数了

<?php $urls = $_SERVER["REQUEST_URI"]; function get($str){ $data = array(); $parameter = explode('&' , end(explode('?' , $str))); foreach($parameter as $val){ $tmp = explode('=',$val); $data[$tmp[0]] = $tmp[1]; } return $data; } $res = get($urls); $typeid = $res["typeid"];?>
利用标签调用的时候把typeid的参数加上就ok了
{pc:content action="lists" catid="8" typeid="$typeid"
这样lists标签函数就可以在查询数据的时候把typeid(种别)加到查询语句里面了。
在phpcms/modules/content/classes目录下的content_tag.class.php这个文件,找到列表页标签lists这个函数,找到这段代码:
if($this->category[$catid]['child']) {$catids_str = $this->category[$catid]['arrchildid'];$pos = strpos($catids_str,',')+1;$catids_str = substr($catids_str, $pos);$sql = "status=99 AND catid IN ($catids_str)".$thumb;} else {$sql = "status=99 AND catid='$catid'".$thumb;}
在这段代码下面增加
if($typeid > 0){$sql .= " AND typeid='$typeid' ";}
这样前台模板在利用lists标签调用列表数据的时候就可以查询到不同分类下的资讯列表数据了。
对付只有二级分类的栏目,用这种开拓办法,可以节省后台操作的多级栏目高下级关系了。