織夢dedecmsarclist標簽無法調用副欄目文章的解決辦法。最近發現DEDECMS/' target='_blank'>dedecms中的文章在選擇幅欄目后,在其對應的幅欄目列表中可以顯示該文章,但在arclist 標簽中卻無法顯示該文章,網上找了很多,解決辦法都一樣,但寫法卻寫錯了,導致arclist標簽在使用了flag屬性時會失效的問題。修正后的寫法如下。
打開/include/taglib/arclist.lib.php,我目前用的最新版 5.7 SP1,代碼約位于295-296行。查找以下兩行代碼。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,這樣就改完了,保存后如果你是生成靜態的,請生成相關的。如果是動態的,請更新系統緩存。然后就可以看到效果了。
以上方法有個缺點arclist 標簽 就是只能有在顯示兩處位置;下面方法經測試可以三個 不知道三個以上可以不可以;用arclist標簽調用文章的時候才發現,根本無法調用相關文章。下面給出解決辦法,希望幫到需要的人。找到/include/taglib/arclist.lib.php文件然后打開。然后在大約300行代碼的位置。將下面的代碼if($CrossID=='') $orwheres[] = ' arc.typeid IN ('.GetSonIds($typeid).')';else $orwheres[] = ' arc.typeid IN ('.GetSonIds($typeid).','.$CrossID.')';替換成if($CrossID=='')$orwheres[] = " (arc.typeid in (".GetSonIds($typeid).") orarc.typeid2 in(".GetSonIds($typeid).") or CONCAT( ',',arc.typeid2, ',' ) LIKE '%,".$typeid.",%' )";else $orwheres[] = " (arc.typeid in (".GetSonIds($typeid).",".$CrossID.") or arc.typeid2in (".GetSonIds($typeid).",".$CrossID.")or CONCAT( ',', arc.typeid2, ',' ) LIKE '%,".$typeid.",%')";