假如你的是一个小型的网站,只要一级分类,不存在子分类,那很简单,上代码

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

声明:有的资源均来自网络转载,版权归原作者所有,如有侵犯到您的权益 请联系邮箱:123456@qq.com 我们将配合处理!

原文地址:PHPCMS二次开发多栏目调用方法发布于2022-05-22 07:43:37

相关推荐