如果你的是一個(gè)小型的網(wǎng)站,只有一級分類,不存在子分類,那很簡單,上代碼
{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}
這里我調(diào)用了分類ID為1,3,5的最新文章。
但是,如果是一個(gè)稍大一些的網(wǎng)站,有的存在子分類,有的不存在,那該如何調(diào)用呢?
在PHPCMS中只能調(diào)用直接分類下的文章,也就是說如果指定一個(gè)分類ID存在子分類,那么將無法調(diào)出文章。所以我們要做的是如果是直接分類那么直接顯示分類id,如果存在子分類,那么顯示所有子分類id,最后再把他們用逗號(hào)連起來,就實(shí)現(xiàn)了相同的效果。
<?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個(gè)指定的分類id,其中23,24沒有子欄目,19有很多子欄目。$CATEGORYS[$row][arrchildid] 這一句很重要,如果沒有子分類直接顯示該分類id,如果有子分類,就會(huì)以1,2,3,4,5這種格式顯示所有子分類,數(shù)組中有3個(gè)值,所以foreach后會(huì)形成3個(gè)數(shù)組,分別為 23、24、以及19,43,44 其中43,44為19的子分類id.
把這3組數(shù)據(jù)賦值給一個(gè)數(shù)組,然后在循環(huán)外用逗號(hào)切割成字符串,拼起來就是 23,24,19,43,44 到這里是不是已經(jīng)一目了然了,該實(shí)現(xiàn)的功能都實(shí)現(xiàn)了,enjoy!
網(wǎng)上查了些資料,發(fā)現(xiàn)也有人這樣來獲取子分類ID
{loop subcat(15) $k $v} {php $subcatid[] = $k;} {/loop} {php $subcatid = implode(',', $subcatid);}
然后在讀取SQL的條件中這樣寫 WHERE catid in($finalcatid)
其實(shí)個(gè)人覺得這種做法純屬雞肋,要獲取一個(gè)指定欄目下的所有子欄目ID,直接用 $CATEGORYS[$catid][arrchildid]不就好了,其中$catid可以改成指定的父分類ID
版權(quán)聲明: 本站資源均來自互聯(lián)網(wǎng)或會(huì)員發(fā)布,如果侵犯了您的權(quán)益請與我們聯(lián)系,我們將在24小時(shí)內(nèi)刪除!謝謝!
轉(zhuǎn)載請注明: PHPCMS二次開發(fā)多欄目調(diào)用方法