POST TIME:2017-11-13 00:14
arclist標簽無法調用副欄目文章的解決辦法
最近發現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).") or
arc.typeid2 in(".GetSonIds($typeid).") or CONCAT( ',',
arc.typeid2, ',' ) LIKE '%,".$typeid.",%' )";
else $orwheres[] = " (arc.typeid in (".GetSonIds($typeid)
.",".$CrossID.") or arc.typeid2
in (".GetSonIds($typeid).",".$CrossID.")
or CONCAT( ',', arc.typeid2, ',' ) LIKE '%,".$typeid.",%')";