網站找了很久 關於織夢調用副欄目的例子 代碼爲
打開/include/taglib/arclist.lib.php,代碼約位於295-296行(我目前用的DedeCMS最新版 5.7 SP1),查找以下兩行代碼:
if($CrossID=='') $orwheres[] = ' arc.typeid IN ('.GetSonIds($typeid).')';
else $orwheres[] = ' arc.typeid IN ('.GetSonIds($typeid).','.$CrossID.')';
將其替換成以下代碼:
if($CrossID=='') $orwheres[] = ' (arc.typeid IN ('.GetSonIds($typeid).') OR arc.typeid2 IN ('.GetSonIds($typeid).')) ';else $orwheres[] = ' (arc.typeid IN ('.GetSonIds($typeid).','.$CrossID.') OR arc.typeid2 IN ('.GetSonIds($typeid).','.$CrossID.')) ';
OK,這樣就改完了,保存後如果你是生成靜態的,請生成相關的。如果是動態的,請更新系統緩存。然後就可以看到效果了。
以上代碼有一個問題 大家想下
typeid2
字段中爲以“,”分割的字符串 和後面的 in集合比較會出現未知結果。 因此解決它可以寫一個 類似 split的函數來解決它 但是 該死的mysql還不支持 返回表結構的函數(別噴我 我的mysql是 門外漢的水平) 沒辦法 咱笨 啊 用死辦法 寫 一個 死欄目的比較 反正生成靜態頁面只 調用一次慢就慢吧 。代碼如下
if($CrossID=='') $orwheres[] = ' (arc.typeid IN ('.GetSonIds($typeid).') OR ( SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',1),\',\',-1) IN ('.GetSonIds($typeid).') OR SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',2),\',\',-1) IN
('.GetSonIds($typeid).') OR SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',3),\',\',-1) IN ('.GetSonIds($typeid).') OR SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',4),\',\',-1) IN ('.GetSonIds($typeid).') OR SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',5),\',\',-1)
IN ('.GetSonIds($typeid).') OR SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',6),\',\',-1) IN ('.GetSonIds($typeid).') OR SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',7),\',\',-1) IN ('.GetSonIds($typeid).') OR SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',8),\',\',-1)
IN ('.GetSonIds($typeid).') OR SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',9),\',\',-1) IN ('.GetSonIds($typeid).')))';
else $orwheres[] = ' (arc.typeid IN ('.GetSonIds($typeid).','.$CrossID.') OR ( SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',1),\',\',-1) IN ('.GetSonIds($typeid).','.$CrossID.') OR SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',2),\',\',-1)
IN ('.GetSonIds($typeid).','.$CrossID.') OR SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',3),\',\',-1) IN ('.GetSonIds($typeid).','.$CrossID.') OR SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',4),\',\',-1) IN ('.GetSonIds($typeid).','.$CrossID.')
OR SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',5),\',\',-1) IN ('.GetSonIds($typeid).','.$CrossID.') OR SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',6),\',\',-1) IN ('.GetSonIds($typeid).','.$CrossID.') OR SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',7),\',\',-1)
IN ('.GetSonIds($typeid).','.$CrossID.') OR SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',8),\',\',-1) IN ('.GetSonIds($typeid).','.$CrossID.') OR SUBSTRING_INDEX(SUBSTRING_INDEX(arc.typeid2,\',\',9),\',\',-1) IN ('.GetSonIds($typeid).','.$CrossID.')))
';