織夢在發表文章時,你會發現有一個副欄目的功能.比如一個文章,他可能即屬于你的科技欄目,也屬于互聯網欄目,那你在發表這個文章時,主欄目可以選擇科技,副欄目可以在互聯網上打勾選定.
文章的副欄目保存在數據庫表archives中的typeid2這個字段中.
效果圖.文章屬于商會.及德商文化等.三個欄目.我里在欄目顯示出來.點擊鏈接后,就會進入相關的欄目中.這里是js函數的形式.只作案例演示.
模板標簽代碼為
| 										1 										2 										3 										4 										5 										6 										7 										8 | 											{dede:arclist row='2' titlelen='100'typeid=2 orderby='id' }   											        <span>   											        <a  href="javascript:"onclick="javascript:change_tab([field:typeid/]);">[field:typename/]</a>   											        <!-- 上面是文章所屬的主欄目,很方便調用. -->   											        [field:typeid2 function="get_url_by_typeid2(@me)"/]   											        <!-- 上面是文章所屬的副欄目,需要單獨寫函數get_url_by_typeid2 -->   											        </span>   											{/dede:arclist} | 
函數代碼,需要增加在/include/extend.func.PHP 中
| 										1 										2 										3 										4 										5 										6 										7 										8 										9 										10 										11 										12 										13 										14 										15 										16 										17 										18 										19 										20 | 											//得到副欄目信息,并組織字符串   											function get_url_by_typeid2($typeid2){   											        $arrs=explode(",",$typeid2);//解析副欄目字段   											        if($typeid2==0){   											        return '';   											        }else{   											        $url='';   											        foreach($arrs as $v){   											            $url.='<a href="javascript:"   											            onclick="javascript:change_tab('.$v.');">'.get_typename($v).'</a>';   											        }   											        return $url;   											        }   											}   											//織夢根據欄目編號typeid調用typename欄目名   											function get_typename($typeid){   											    global $dsql;   											    $rs=$dsql->getOne("select typename from arctype where id='$typeid'");   											return $rs['typename'];   											} | 
另外特別注意,織夢標簽artlist不能調用副欄目中的文章內容的問題,即文章屬于互聯網這個副欄目,但互聯網欄目中卻不顯示這個文章.
需要修改系統文件./include/taglib/arclist.lib.php
295到296行修改
原代碼
| 										1 										2 | 											if($CrossID=='') $orwheres[] = ' arc.typeid IN ('.GetSonIds($typeid).')';   											else $orwheres[] = ' arc.typeid IN ('.GetSonIds($typeid).','.$CrossID.')'; | 
修改為
| 										1 										2 										3 										4 | 											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.",%')"; | 




















