function getType($typeid) { $this->TypeLink = new TypeLink($typeid); $typeinfos = $this->TypeLink->TypeInfos; $typeinfos['typelink'] = $typeinfos['typeurl'] = GetOneTypeUrlA($this->TypeLink->TypeInfos); $typeinfos['position'] = Html2Text($this->TypeLink->GetPositionLink(TRUE)); return $typeinfos; }
function lib_sonchannel(&$ctag, &$refObj) { global $_sys_globals, $dsql; $attlist = "row|100,nosonmsg|,col|1"; FillAttsDefault($ctag->CAttribute->Items, $attlist); extract($ctag->CAttribute->Items, EXTR_SKIP); $innertext = $ctag->GetInnerText(); $typeid = $_sys_globals['typeid']; if (empty($typeid)) { return $ctag->GetAtt('nosonmsg'); } $sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath\r\n FROM `#@__arctype` WHERE reid='{$typeid}' AND ishidden<>1 ORDER BY sortrank ASC LIMIT 0,{$row}"; //And id<>'$typeid' $dtp2 = new DedeTagParse(); $dtp2->SetNameSpace("field", "[", "]"); $dtp2->LoadSource($innertext); $dsql->SetQuery($sql); $dsql->Execute(); $line = $row; $GLOBALS['autoindex'] = 0; $likeType = ''; for ($i = 0; $i < $line; $i++) { if ($col > 1) { $likeType .= "<dl>\r\n"; } for ($j = 0; $j < $col; $j++) { if ($col > 1) { $likeType .= "<dd>\r\n"; } if ($row = $dsql->GetArray()) { $row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row); if (is_array($dtp2->CTags)) { foreach ($dtp2->CTags as $tagid => $ctag) { if (isset($row[$ctag->GetName()])) { $dtp2->Assign($tagid, $row[$ctag->GetName()]); } } } $likeType .= $dtp2->GetResult(); } if ($col > 1) { $likeType .= "</dd>\r\n"; } $GLOBALS['autoindex']++; } //Loop Col if ($col > 1) { $i += $col - 1; $likeType .= " </dl>\r\n"; } } //Loop for $i $dsql->FreeResult(); return $likeType; }
function cattreeListSon($id, &$revalue) { global $dsql; $query = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath From `#@__arctype` where reid='{$id}' And ishidden<>1 "; $dsql->Execute($id, $query); $thisv = ''; while ($row = $dsql->GetArray($id)) { $row['typelink'] = GetOneTypeUrlA($row); $thisv .= "\t<dl class='cattree'>\n"; $thisv .= "\t<dt><a href='{$row['typelink']}'>{$row['typename']}</a></dt>\n"; cattreeListSon($row['id'], $thisv); $thisv .= "\t</dl>\n"; } if ($thisv != '') { $revalue .= "\t<dd>\n{$thisv}\t</dd>\n"; } }
function lib_type(&$ctag, &$refObj) { global $dsql, $envs; $attlist = 'typeid|0'; FillAttsDefault($ctag->CAttribute->Items, $attlist); extract($ctag->CAttribute->Items, EXTR_SKIP); $innertext = trim($ctag->GetInnerText()); if ($typeid == 0) { $typeid = isset($refObj->TypeLink->TypeInfos['id']) ? $refObj->TypeLink->TypeInfos['id'] : $envs['typeid']; } if (empty($typeid)) { return ''; } $row = $dsql->GetOne("SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath \r\n FROM `#@__arctype` WHERE id='{$typeid}' "); if (!is_array($row)) { return ''; } if (trim($innertext) == '') { $innertext = GetSysTemplets("part_type_list.htm"); } $dtp = new DedeTagParse(); $dtp->SetNameSpace('field', '[', ']'); $dtp->LoadSource($innertext); if (!is_array($dtp->CTags)) { unset($dtp); return ''; } else { $row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row); foreach ($dtp->CTags as $tagid => $ctag) { if (isset($row[$ctag->GetName()])) { $dtp->Assign($tagid, $row[$ctag->GetName()]); } } $revalue = $dtp->GetResult(); unset($dtp); return $revalue; } }
/** * 动态模板channel标签 * * @version $Id: plus_ask.php 1 13:58 2010年7月5日Z tianya $ * @package DedeCMS.Tpllib * @copyright Copyright (c) 2007 - 2010, DesDev, Inc. * @license http://help.dedecms.com/usersguide/license.html * @link http://www.dedecms.com */ function plus_channel(&$atts, &$refObj, &$fields) { global $dsql, $_vars; $attlist = "typeid=0,reid=0,row=100,type=son,currentstyle="; FillAtts($atts, $attlist); FillFields($atts, $fields, $refObj); extract($atts, EXTR_OVERWRITE); $line = empty($row) ? 100 : $row; $reArray = array(); $reid = 0; $topid = 0; //如果属性里没指定栏目id,从引用类里获取栏目信息 if (empty($typeid)) { if (isset($refObj->TypeLink->TypeInfos['id'])) { $typeid = $refObj->TypeLink->TypeInfos['id']; $reid = $refObj->TypeLink->TypeInfos['reid']; $topid = $refObj->TypeLink->TypeInfos['topid']; } else { $typeid = 0; } } else { $row2 = $dsql->GetOne("SELECT * FROM `#@__arctype` WHERE id='{$typeid}' "); $typeid = $row2['id']; $reid = $row2['reid']; $topid = $row2['topid']; $issetInfos = true; } if ($type == '' || $type == 'sun') { $type = 'son'; } if ($type == 'top') { $sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath\r\n FROM `#@__arctype` WHERE reid=0 AND ishidden<>1 ORDER BY sortrank ASC LIMIT 0, {$line} "; } else { if ($type == 'son') { if ($typeid == 0) { return $reArray; } $sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath\r\n FROM `#@__arctype` WHERE reid='{$typeid}' AND ishidden<>1 ORDER BY sortrank ASC LIMIT 0, {$line} "; } else { if ($type == 'self') { if ($reid == 0) { return $reArray; } $sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath\r\n FROM `#@__arctype` WHERE reid='{$reid}' AND ishidden<>1 ORDER BY sortrank ASC LIMIT 0, {$line} "; } } } //检查是否有子栏目,并返回rel提示(用于二级菜单) $needRel = true; if (empty($sql)) { return $reArray; } $dsql->Execute('me', $sql); $totalRow = $dsql->GetTotalRow('me'); //如果用子栏目模式,当没有子栏目时显示同级栏目 if ($type == 'son' && $reid != 0 && $totalRow == 0) { $sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath\r\n FROM `#@__arctype` WHERE reid='{$reid}' AND ishidden<>1 ORDER BY sortrank ASC LIMIT 0, {$line} "; $dsql->Execute('me', $sql); } $GLOBALS['autoindex'] = 0; while ($row = $dsql->GetArray()) { $row['currentstyle'] = $row['sonids'] = $row['rel'] = ''; if ($needRel) { $row['sonids'] = GetSonIds($row['id'], 0, false); if ($row['sonids'] == '') { $row['rel'] = ''; } else { $row['rel'] = " rel='dropmenu{$row['id']}'"; } } //处理同级栏目中,当前栏目的样式 if (($row['id'] == $typeid || $topid == $row['id'] && $type == 'top') && $currentstyle != '') { $row['currentstyle'] = $currentstyle; } $row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row); $reArray[] = $row; $GLOBALS['autoindex']++; } //Loop for $i $dsql->FreeResult(); return $reArray; }
function lib_channelartlist(&$ctag, &$refObj) { global $dsql, $envs, $_sys_globals, $cfg_tui; //处理标记属性、innertext $attlist = 'typeid|0,row|20,showhide|no,cacheid|'; FillAttsDefault($ctag->CAttribute->Items, $attlist); extract($ctag->CAttribute->Items, EXTR_SKIP); $innertext = trim($ctag->GetInnerText()); $showhideArr = array('yes' => 0, 'no' => 1, 'both' => -1); $hideflag = $showhideArr[$showhide]; $artlist = ''; //读取固定的缓存块 $cacheid = trim($cacheid); if ($cacheid != '') { $artlist = GetCacheBlock($cacheid); if ($artlist != '') { return $artlist; } } if (empty($typeid)) { $typeid = !empty($refObj->TypeLink->TypeInfos['id']) ? $refObj->TypeLink->TypeInfos['id'] : 0; } if ($innertext == '') { $innertext = GetSysTemplets('part_channelartlist.htm'); } $totalnum = $row; if (empty($totalnum)) { $totalnum = 20; } //获得类别ID总数的信息 $typeids = array(); if ($typeid == 0) { $tpsql = " reid<>0 AND ispart<>2 AND ishidden<>{$hideflag} AND channeltype>0 "; } else { if ($typeid == '-1') { $tpsql = " reid=0 and ishidden<>{$hideflag} AND channeltype>0 "; } else { if ($typeid == '-9999999') { $tpsql = " id={$cfg_tui} AND ispart<>2 AND ishidden<>{$hideflag} "; } else { if (!preg_match('#,#', $typeid) && $typeid > 0) { $tpsql = " reid='{$typeid}' AND ispart<>2 AND ishidden<>{$hideflag} "; } else { if ($typeid < 0) { $typeid = 0 - $typeid; $tpsql = " id={$typeid} AND ispart<>2 AND ishidden<>{$hideflag} "; } else { $tpsql = " reid IN({$typeid}) AND ispart<>2 AND ishidden<>{$hideflag} "; } } } } } if ($orderby == '') { $orderbysql = "ORDER BY id"; } else { $orderbysql = "ORDER BY {$orderby}"; } if ($orderway == '') { $orderwaysql = "desc"; } else { $orderwaysql = "{$orderway}"; } $dsql->SetQuery("SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath \r\n FROM `#@__arctype` WHERE {$tpsql} {$orderbysql} {$orderwaysql} LIMIT {$totalnum}"); $dsql->Execute(); while ($row = $dsql->GetArray()) { $typeids[] = $row; } if (!isset($typeids[0])) { return ''; } $GLOBALS['itemindex'] = 0; $GLOBALS['itemparity'] = 1; for ($i = 0; isset($typeids[$i]); $i++) { $GLOBALS['itemindex']++; $pv = new PartView($typeids[$i]['id']); $pv->Fields['typeurl'] = GetOneTypeUrlA($typeids[$i]); $pv->SetTemplet($innertext, 'string'); $artlist .= $pv->GetResult(); $GLOBALS['itemparity'] = $GLOBALS['itemparity'] == 1 ? 2 : 1; } //注销环境变量,以防止后续调用中被使用 $GLOBALS['envs']['typeid'] = $_sys_globals['typeid']; $GLOBALS['envs']['reid'] = ''; if ($cacheid != '') { WriteCacheBlock($cacheid, $artlist); } return $artlist; }
function lib_channel(&$ctag, &$refObj) { global $dsql; $attlist = "typeid|0,reid|0,row|100,col|1,type|son,currentstyle|,cacheid|"; FillAttsDefault($ctag->CAttribute->Items, $attlist); extract($ctag->CAttribute->Items, EXTR_SKIP); $innertext = $ctag->GetInnerText(); $line = empty($row) ? 100 : $row; $likeType = ''; //读取固定的缓存块 $cacheid = trim($cacheid); if ($cacheid != '') { $likeType = GetCacheBlock($cacheid); if ($likeType != '') { return $likeType; } } $reid = 0; $topid = 0; //如果属性里没指定栏目id,从引用类里获取栏目信息 if (empty($typeid)) { if (isset($refObj->TypeLink->TypeInfos['id'])) { $typeid = $refObj->TypeLink->TypeInfos['id']; $reid = $refObj->TypeLink->TypeInfos['reid']; $topid = $refObj->TypeLink->TypeInfos['topid']; } else { $typeid = 0; } } else { $row2 = $dsql->GetOne("Select * From `#@__arctype` where id='{$typeid}' "); $typeid = $row2['id']; $reid = $row2['reid']; $topid = $row2['topid']; $issetInfos = true; } if ($type == '' || $type == 'sun') { $type = 'son'; } if ($innertext == '') { $innertext = GetSysTemplets("channel_list.htm"); } if ($type == 'top') { $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath\r\n\t\t From `#@__arctype` where reid=0 And ishidden<>1 order by sortrank asc limit 0, {$line} "; } else { if ($type == 'son') { if ($typeid == 0) { return ''; } $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath\r\n\t\t From `#@__arctype` where reid='{$typeid}' And ishidden<>1 order by sortrank asc limit 0, {$line} "; } else { if ($type == 'self') { if ($reid == 0) { return ''; } $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath\r\n\t\t\tFrom `#@__arctype` where reid='{$reid}' And ishidden<>1 order by sortrank asc limit 0, {$line} "; } } } //And id<>'$typeid' $needRel = false; $dtp2 = new DedeTagParse(); $dtp2->SetNameSpace('field', '[', ']'); $dtp2->LoadSource($innertext); //检查是否有子栏目,并返回rel提示(用于二级菜单) if (ereg(':rel', $innertext)) { $needRel = true; } if (empty($sql)) { return ''; } $dsql->SetQuery($sql); $dsql->Execute(); $totalRow = $dsql->GetTotalRow(); //如果用子栏目模式,当没有子栏目时显示同级栏目 if ($type == 'son' && $reid != 0 && $totalRow == 0) { $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath\r\n\t\t\tFrom `#@__arctype` where reid='{$reid}' And ishidden<>1 order by sortrank asc limit 0, {$line} "; $dsql->SetQuery($sql); $dsql->Execute(); } $GLOBALS['autoindex'] = 0; for ($i = 0; $i < $line; $i++) { if ($col > 1) { $likeType .= "<dl>\r\n"; } for ($j = 0; $j < $col; $j++) { if ($col > 1) { $likeType .= "<dd>\r\n"; } if ($row = $dsql->GetArray()) { $row['sonids'] = $row['rel'] = ''; if ($needRel) { $row['sonids'] = GetSonIds($row['id'], 0, false); if ($row['sonids'] == '') { $row['rel'] = ''; } else { $row['rel'] = " rel='dropmenu{$row['id']}'"; } } //处理同级栏目中,当前栏目的样式 if (($row['id'] == $typeid || $topid == $row['id'] && $type == 'top') && $currentstyle != '') { $linkOkstr = $currentstyle; $row['typelink'] = GetOneTypeUrlA($row); $linkOkstr = str_replace("~rel~", $row['rel'], $linkOkstr); $linkOkstr = str_replace("~id~", $row['id'], $linkOkstr); $linkOkstr = str_replace("~typelink~", $row['typelink'], $linkOkstr); $linkOkstr = str_replace("~typename~", $row['typename'], $linkOkstr); $likeType .= $linkOkstr; } else { $row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row); if (is_array($dtp2->CTags)) { foreach ($dtp2->CTags as $tagid => $ctag) { if (isset($row[$ctag->GetName()])) { $dtp2->Assign($tagid, $row[$ctag->GetName()]); } } } $likeType .= $dtp2->GetResult(); } } if ($col > 1) { $likeType .= "</dd>\r\n"; } $GLOBALS['autoindex']++; } //Loop Col if ($col > 1) { $i += $col - 1; $likeType .= "\t</dl>\r\n"; } } //Loop for $i $dsql->FreeResult(); if ($cacheid != '') { WriteCacheBlock($cacheid, $likeType); } return $likeType; }
function lib_channelartlist(&$ctag, &$refObj) { global $dsql, $envs, $_sys_globals; //处理标记属性、innertext $attlist = 'typeid|0,row|20,cacheid|'; FillAttsDefault($ctag->CAttribute->Items, $attlist); extract($ctag->CAttribute->Items, EXTR_SKIP); $innertext = trim($ctag->GetInnerText()); $artlist = ''; //读取固定的缓存块 $cacheid = trim($cacheid); if ($cacheid != '') { $artlist = GetCacheBlock($cacheid); if ($artlist != '') { return $artlist; } } if (empty($typeid)) { $typeid = !empty($refObj->TypeLink->TypeInfos['id']) ? $refObj->TypeLink->TypeInfos['id'] : 0; } if ($innertext == '') { $innertext = GetSysTemplets('part_channelartlist.htm'); } $totalnum = $row; if (empty($totalnum)) { $totalnum = 20; } //获得类别ID总数的信息 $typeids = array(); if ($typeid == 0 || $typeid == 'top') { $tpsql = " reid=0 AND ispart<>2 AND ishidden<>1 AND channeltype>0 "; } else { if (!preg_match('#,#', $typeid)) { $tpsql = " reid='{$typeid}' AND ispart<>2 AND ishidden<>1 "; } else { $tpsql = " id IN({$typeid}) AND ispart<>2 AND ishidden<>1 "; } } $dsql->SetQuery("SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath \n FROM `#@__arctype` WHERE {$tpsql} ORDER BY substring_index( '{$typeid}',id,1) limit {$totalnum}"); $dsql->Execute(); while ($row = $dsql->GetArray()) { $typeids[] = $row; } if (!isset($typeids[0])) { return ''; } $GLOBALS['itemindex'] = 0; $GLOBALS['itemparity'] = 1; for ($i = 0; isset($typeids[$i]); $i++) { $GLOBALS['itemindex']++; $pv = new PartView($typeids[$i]['id']); $pv->Fields['typeurl'] = GetOneTypeUrlA($typeids[$i]); if ($typeids[$i]['id'] == $refObj->TypeLink->TypeInfos['id'] || $typeids[$i]['id'] == $refObj->TypeLink->TypeInfos['topid']) { $pv->Fields['currentstyle'] = $currentstyle ? $currentstyle : 'current'; } else { $pv->Fields['currentstyle'] = ''; } $pv->SetTemplet($innertext, 'string'); $artlist .= $pv->GetResult(); $GLOBALS['itemparity'] = $GLOBALS['itemparity'] == 1 ? 2 : 1; } //注销环境变量,以防止后续调用中被使用 $GLOBALS['envs']['typeid'] = $_sys_globals['typeid']; $GLOBALS['envs']['reid'] = ''; if ($cacheid != '') { WriteCacheBlock($cacheid, $artlist); } return $artlist; }