1. 程式人生 > >dede呼叫副欄目文章列表方法

dede呼叫副欄目文章列表方法

寫這篇博文的原因是因為伊暖童鞋遇到了一個問題, 交流了好半天才曉得到底指的是什麼。我發現,搞計算機久了,連和別人交流都成問題了。 伊暖童鞋想解決的問題,可以使用呼叫副欄目的方法來解決。我去看了下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模糊查詢了。如果你有更好的方法的話。