001 <?php002 function lib_channel(&$ctag,&$refObj)003 {004 global $_sys_globals,$envs,$dsql;005 $attlist = "typeid|0,reid|0,row|100,col|1,type|son,currentstyle|";006 FillAttsDefault($ctag->CAttribute->Items,$attlist);007 extract($ctag->CAttribute->Items, EXTR_SKIP);008 $innertext = $ctag->GetInnerText();009 $cacheid = trim($cacheid);010 if($cacheid !='') {011 $likeType = GetCacheBlock($cacheid);012 if($likeType != '') return $likeType;013 }014 015 $reid = 0;016 $topid = 0;017 if(empty($typeid) && $envs['typeid']!=0)018 {019 $typeid = $envs['typeid'];020 $reid = $envs['reid'];021 }else{022 $reid=0;023 }024 if($type==''||$type=='sun') $type="son";025 if($innertext=='') $innertext = GetSysTemplets("channel_list.htm");026 if($reid==0 && $typeid>0)027 {028 $dbrow = $dsql->GetOne("Select reid From dede_arctype where id='$typeid' ");029 if(is_array($dbrow)) $reid = $dbrow['reid'];030 }031 $likeType = '';032 if($type=='top')033 {034 $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description035 From dede_arctype where reid=0 And ishidden<>1 order by sortrank asc limit 0,$row";036 }037 else if($type=="son")038 {039 //if($_sys_globals['typeid']>0) $typeid = $_sys_globals['typeid'];040 if($typeid==0) {041 return '';042 }043 $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description044 From dede_arctype where reid='$typeid' And ishidden<>1 order by sortrank asc limit 0,$row";045 }046 else if($type=="self")047 {048 if($reid==0) {049 return '';050 }051 $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description052 From `dede_arctype` where reid='$reid' And ishidden<>1 order by sortrank asc limit 0,$row";053 }054 //And id<>'$typeid'055 $needRel = false;056 $dtp2 = new DedeTagParse();057 $dtp2->SetNameSpace("field","[","]");058 $dtp2->LoadSource($innertext);059 $dsql2 = clone $dsql;060 $dsql->SetQuery($sql);061 $dsql->Execute();062 $line = $row;063 //检查是否有子栏目,并返回rel提示(用于二级菜单)064 if(ereg(':rel', $innertext)) $needRel = true;065 066 if(empty($sql)) return '';067 $dsql->SetQuery($sql);068 $dsql->Execute();069 070 $totalRow = $dsql->GetTotalRow();071 $GLOBALS['autoindex'] = 0;072 for($i=0;$i < $line;$i++)073 {074 if($col>1) $likeType .= "<dl>/r/n";075 for($j=0;$j<$col;$j++)076 {077 if($col>1) $likeType .= "<dd>/r/n";078 if($row=$dsql->GetArray())079 {080 $row['sonids'] = $row['rel'] = '';081 if($needRel)082 {083 $row['sonids'] = GetSonIds($row['id'], 0, false);084 if($row['sonids']=='') $row['rel'] = '';085 else $row['rel'] = " rel='dropmenu{$row['id']}'";086 }087 //处理同级栏目中,当前栏目的样式088 if( ($row['id']==$typeid || ($topid==$row['id'] && $type=='top') ) && $currentstyle!='' )089 {090 if($currentstyle!='')091 {092 $linkOkstr = $currentstyle;093 $row['typelink'] = GetOneTypeUrlA($row);094 $linkOkstr = str_replace("~rel~",$row['rel'],$linkOkstr);095 $linkOkstr = str_replace("~id~",$row['id'],$linkOkstr);096 $linkOkstr = str_replace("~typelink~",$row['typelink'],$linkOkstr);097 $linkOkstr = str_replace("~typename~",$row['typename'],$linkOkstr);098 $likeType .= $linkOkstr;099 }100 }else101 {102 $row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row);103 if(is_array($dtp2->CTags))104 {105 foreach($dtp2->CTags as $tagid=>$ctag){106 if(isset($row[$ctag->GetName()]))107 {108 $dtp2->Assign($tagid,$row[$ctag->GetName()]);109 }110 elseif (preg_match('/^sonchannel[0-9]*$/',$ctag->GetName()))111 {112 $dtp2->Assign($tagid,lib_channel_son($ctag,$row['id'],$dsql2));113 }114 }115 }116 $likeType .= $dtp2->GetResult();117 }118 }119 if($col>1) $likeType .= "</dd>/r/n";120 $GLOBALS['autoindex']++;121 }//Loop Col122 if($col>1)123 {124 $i += $col - 1;125 $likeType .= " </dl>/r/n";126 }127 }//Loop for $i128 reset($dsql2);129 $dsql->FreeResult();130 return $likeType;131 }132 function lib_channel_son($ctag,$typeid = 0,$dsql2)133 {134 $attlist = "row|100,col|1,currentstyle|";135 FillAttsDefault($ctag->CAttribute->Items,$attlist);136 extract($ctag->CAttribute->Items, EXTR_SKIP);137 $innertext = $ctag->GetInnerText();138 $dsql3 = clone $dsql2;139 $likeType = '';140 //if($_sys_globals['typeid']>0) $typeid = $_sys_globals['typeid'];141 if($typeid==0) {142 return '';143 }144 $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description145 From dede_arctype where reid='$typeid' And ishidden<>1 order by sortrank asc limit 0,$row";146 //And id<>'$typeid'147 $dtp2 = new DedeTagParse();148 $dtp2->SetNameSpace("field","[","]");149 $dtp2->LoadSource($innertext);150 $dsql2->SetQuery($sql);151 $dsql2->Execute();152 $line = $row;153 for($i=0;$i < $line;$i++)154 {155 if($col>1) $likeType .= "<dl>/r/n";156 for($j=0;$j<$col;$j++)157 {158 if($col>1) $likeType .= "<dd>/r/n";159 if($row=$dsql2->GetArray())160 {161 $row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row);162 if(is_array($dtp2->CTags))163 {164 foreach($dtp2->CTags as $tagid=>$ctag){165 if(isset($row[$ctag->GetName()]))166 {167 $dtp2->Assign($tagid,$row[$ctag->GetName()]);168 }169 elseif (preg_match('/^sonchannel[0-9]*$/',$ctag->GetName()))170 {171 $dtp2->Assign($tagid,lib_channel_son($ctag,$row['id'],$dsql3));172 }173 }174 }175 $likeType .= $dtp2->GetResult();176 }177 if($col>1) $likeType .= "</dd>/r/n";178 }//Loop Col179 if($col>1)180 {181 $i += $col - 1;182 $likeType .= " </dl>/r/n";183 }184 }//Loop for $i185 reset($dsql3);186 $dsql2->FreeResult();187 return $likeType;188 }189 ?>
01 {dede:channel type='son' typeid='3'}02 [field:typename/]03 <ul>04 [field:sonchannel0]05 <li><a href="[field:typelink/]">[field:typename/]</a></li>06 [field:sonchannel1]07 <li><a href="[field:typelink/]">---[field:typename/]</a></li>08 [field:sonchannel2]09 <li><a href="[field:typelink/]">===[field:typename/]</a></li>10 [field:sonchannel3]11 <li><a href="[field:typelink/]">===[field:typename/]</a></li>12 [/field:sonchannel3]13 [/field:sonchannel2]14 [/field:sonchannel1]15 [/field:sonchannel0]16 </ul>17 {/dede:channel}
新闻热点
疑难解答