PHPCMS二次开发:实现多栏目调用的方法
PHPCMS二次开发多栏目调用方法可以通过以下步骤实现: 1. 在模板文件中找到需要调用栏目的地方。 2. 使用`$this->category[$id]`获取指定ID的栏目信息。 3. 使用`$this->category[$id]['child']`获取该栏目下的所有子栏目。 4. 使用`$this->category[$id]['content']`获取该栏目的内容列表。 5. 根据需要对内容列表进行筛选和排序。 6. 将筛选后的内容列表输出到模板中。
如果你的是一个小型的网站,只有一级分类,不存在子分类,那很简单,上代码
PHPCMS单个栏目调用方法
{pc:getsql="SELECT*FROMv9_newsWHEREcatidin(1,3,5)ORDERBYidDESC"num="10"}{loop$data$v}<li><ahref="{$v[url]}">{$v[title]}</a></li>{/loop}{/pc}
这里我调用了分类ID为1,3,5的最新文章。
但是,如果是一个稍大一些的网站,有的存在子分类,有的不存在,那该如何调用呢?
在PHPCMS中只能调用直接分类下的文章,也就是说如果指定一个分类ID存在子分类,那么将无法调出文章。所以我们要做的是如果是直接分类那么直接显示分类id,如果存在子分类,那么显示所有子分类id,最后再把他们用逗号连起来,就实现了相同的效果。
phpcms二次开发多栏目调用方法
<?php$assigncatid=array(23,24,19);$str=array();foreach($assigncatidas$row){$str[]=$CATEGORYS[$row][arrchildid];}$finalcatid=implode(',',$str);?>{pc:getsql="SELECT*FROMv9_newsWHEREcatidin($finalcatid)ORDERBYidDESC"num="14"}{loop$data$v}<li><ahref="{$v[url]}">{$v[title]}</a></li>{/loop}{/pc}
这里我选了3个指定的分类id,其中23,24没有子栏目,19有很多子栏目。$CATEGORYS[$row][arrchildid]这一句很重要,如果没有子分类直接显示该分类id,如果有子分类,就会以1,2,3,4,5这种格式显示所有子分类,数组中有3个值,所以foreach后会形成3个数组,分别为23、24、以及19,43,44其中43,44为19的子分类id.
把这3组数据赋值给一个数组,然后在循环外用逗号切割成字符串,拼起来就是23,24,19,43,44到这里是不是已经一目了然了,该实现的功能都实现了,enjoy!
网上查了些资料,发现也有人这样来获取子分类ID
{loopsubcat(15)$k$v}{php$subcatid[]=$k;}{/loop}{php$subcatid=implode(',',$subcatid);}
然后在读取SQL的条件中这样写WHERE catid in($finalcatid)
其实个人觉得这种做法纯属鸡肋,要获取一个指定栏目下的所有子栏目ID,直接用$CATEGORYS[$catid][arrchildid]不就好了,其中$catid可以改成指定的父分类ID