dede呼叫副欄目文章列表方法
阿新 • • 發佈:2019-01-02
寫這篇博文的原因是因為伊暖童鞋遇到了一個問題,
交流了好半天才曉得到底指的是什麼。我發現,搞計算機久了,連和別人交流都成問題了。
伊暖童鞋想解決的問題,可以使用呼叫副欄目的方法來解決。我去看了下arclist標籤。
發現此標籤預設變數中沒有typeid2的變數。
目前面臨兩個解決途徑。
1.sql呼叫
2.修改arclist標籤
個人比較喜歡修改標籤。所以,吼吼~~
修改檔案/include/taglib/arclist.lib.php
查詢
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 FIND_IN_SET('.GetSonIds($typeid).',arc.typeid2)';
else $orwheres[] = 'arc.typeid IN ('.GetSonIds($typeid).','.$CrossID.')or FIND_IN_SET('.GetSonIds($typeid).',arc.typeid2)';
程式碼具體意思不多做解釋。無非就是給sql語句增加了個判斷typeid2的情況。
剛才我百度了一下,這方面的修改文章還真不少。
還有人提到了模糊查詢。我把下面的程式碼黏貼進來,共大家參考。
模糊查詢說明:
mysql中如果用like模糊查詢的話,也是可以的。不過可能不是很準。
程式碼如下:
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.",%')";
一般SQL是可以支援CHARINDEX函式的。不過可惜的是Mysql不支援這個函式所以只能用以上方法或者like模糊查詢了。如果你有更好的方法的話。