arclist標籤沒法調用副欄目文章的解決辦法php
最近發現DEDECMS中的文章在選擇幅欄目後,緩存
在其對應的幅欄目列表中能夠顯示該文章,但在arclist 標籤中卻沒法顯示該文章,測試
網上找了不少,解決辦法都同樣,但寫法卻寫錯了,致使arclist標籤在使用了flag屬性時會失效的問題。spa
修正後的寫法以下。cli
打開/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.')';標籤
將其替換成如下代碼。co
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.')) ';oss
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.",%')";