RELATEED CONSULTING
相关咨询
选择下列服务马上在线沟通
服务时间:9:00-20:00
你可能遇到了下面的问题
关闭右侧工具栏

技术支持

PH电脑MS二开多栏目调用办法

  • 作者:郑州融科网络
  • 发表时间:2019-09-11
  • 人气:

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

PH电脑MS单个栏目调用办法{pc:get sql="SELECT * FROM v9_news WHERE catid in(1,3,5) ORDER BY id DESC" num="10"} {loop $data $v} <li><a href="{$v[url]}">{$v[title]}</a></li> {/loop} {/pc}

这里我调用了分类ID为1,3,5的最新新闻。

但是,如果是一个稍大一些的网站,有的存在子分类,有的不存在,那该怎么调用呢?

在PH电脑MS中只能调用直接分类下的新闻,也就是说如果指定一个分类ID存在子分类,那么将无法调出新闻。所以我们要做的是如果是直接分类那么直接显示分类id,如果存在子分类,那么显示所有子分类id,最后再把他们用逗号连起来,就实现了相同的效果。

PH电脑MS二开多栏目调用办法<?php $assigncatid=array(23,24,19); $str =array(); foreach($assigncatid as $row){ $str[]=$CATEGORYS[$row][arrchildid]; } $finalcatid= implode(',', $str); ?> {pc:get sql="SELECT * FROM v9_news WHERE catid in($finalcatid) ORDER BY id DESC" num="14"} {loop $data $v} <li><a href="{$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

{loop subcat(15)  $k $v} {php $subcatid[] = $k;} {/loop} {php $subcatid  = implode(',', $subcatid);}

然后在读取SQL的条件中这样写 WHERE catid in($finalcatid)

其实个人觉得这种做法纯属鸡肋,要获取一个指定栏目下的所有子栏目ID,直接用 $CATEGORYS[$catid][arrchildid]不就好了,其中$catid可以改成指定的父分类ID

本文章网址,转载请保留此链接http://www.zzvy.cn/cms/1693.html
本文标签: phpcm PHPCMS二次开发