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模糊查詢了。如果你有更好的方法的話。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章