2012-06-15 10:54?來源 溫州視線
dede副欄目調(diào)用方法用普通DEDE調(diào)用欄目的代碼無效,dede封面或者首頁調(diào)用副欄目的文章,用dede arclist是無法顯示的,網(wǎng)上查了一下都是下面說的第一種方法,這樣修改后是能調(diào)用副欄目的文章列表,但是首頁、頻道頁、列表頁的推薦無效了,第二種方法可以完美解決調(diào)用副欄目文章的問題。
修改文件/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)';
代碼說明:
arc.typeid IN ('.GetSonIds($typeid).')查詢dede_arctiny表中的typeid字段,如果是有.GetSonIds($typeid).的就查詢并返回去。這里沒有typeid2所以在這里就要加上 or FIND_IN_SET('.GetSonIds($typeid).',arc.typeid2)'
意思就是查詢typeid2字段中如果包含了.GetSonIds($typeid).此數(shù)字的話也返回。但是這樣一設(shè)置封面的推薦什么的都不顯示了,所以只能用模糊查詢。
模糊查詢說明:
mysql中如果用like模糊查詢的話,也是可以的。不過可能不是很準(zhǔn)。
代碼如下:
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.",%')";
這個代碼已經(jīng)試過了,很好。
一般SQL是可以支持CHARINDEX函數(shù)的。不過可惜的是Mysql不支持這個函數(shù)所以只能用以上方法或者like模糊查詢了。如果你有更好的方法的話。除外,我只知道這兩種就先發(fā)出來了。
本文來源 電腦互助網(wǎng)|http://www.pc811.com 原文鏈接:http://www.pc811.com/6/4/25022.html
本文“”來源:http://www.hangqichache.cn/keji/intel/zzzj/rumen/43816.html,轉(zhuǎn)載必須保留網(wǎng)址。編輯: yujeu