今天看了看phpcms 寫到二級導航時發現點問題,查詢導航欄的資訊時返回的$r[arrchildid]與自己想像的不符,文檔上說是返回子欄位id但是卻有些不同。
開始的思路:
首页 {pc:content action="category" catid="0" num="10" siteid="$siteid" order="listorder ASC"} {loop $data $r} {if $r[arrchildid]} {$r[catname]} {pc:content action="category" catid="$r[catid]" num="10" siteid="$siteid" order="listorder ASC" return="data2"} {loop $data2 $v} {$v[catname]} {/loop} {/pc} {/if} {/loop} {/pc}
大致思路:查詢該文檔下是否有子欄id,如果有則輸出二級導航。程式碼中第5行是偵測該欄位下是否有子欄位id,但是我發現當沒有子欄位時會傳回目前欄位目的id導致判斷無法達到預期的效果,所以改變思路,程式碼如下:
首页 {pc:content action="category" catid="0" num="10" siteid="$siteid" order="listorder ASC"} {loop $data $r} {if $r[arrchildid] != $r[catid]} {$r[catname]} {pc:content action="category" catid="$r[catid]" num="10" siteid="$siteid" order="listorder ASC" return="data2"} {loop $data2 $v} {$v[catname]} {/loop} {/pc} {else} {$r[catname]} {/if} {/loop} {/pc}
判斷取得到的子欄id是否等於該欄位id,等於則表示沒有子欄目,不等於則表示有子欄位且顯示子欄位