channel
标签,并设置typeid
属性为需要调用的栏目ID。管理系统(DedeCMS)中,调用部分多个栏目的方法多种多样,可以根据具体需求选择不同的实现方式,以下是一些常见的方法:
h3 修改channel.lib.php文件
1、修改步骤:
打开includetaglib
目录下的channel.lib.php
文件。
将以下代码复制替换到文件中:
function lib_channel(&$ctag,&$refObj)
{
global $_sys_globals,$envs,$dsql;
$attlist = "typeid|0,reid|0,row|100,col|1,type|son,currentstyle|";
FillAttsDefault($ctag>CAttribute>Items,$attlist);
extract($ctag>CAttribute>Items, EXTR_SKIP);
$innertext = $ctag>GetInnerText();
$cacheid = trim($cacheid);
if($cacheid !='') {
$likeType = GetCacheBlock($cacheid);
if($likeType != '') return $likeType;
}
$reid = 0;
$topid = 0;
if(empty($typeid) && $envs['typeid']!=0)
{
$typeid = $envs['typeid'];
$reid = $envs['reid'];
}else{
$reid=0;
}
if($type==''||$type=='sun') $type="son";
if($innertext=='') $innertext = GetSysTemplets("channel_list.htm");
if($reid==0 && $typeid>0)
{
$dbrow = $dsql>GetOne("Select reid From dede_arctype where id='$typeid' ");
if(is_array($dbrow)) $reid = $dbrow['reid'];
}
$likeType = '';
if($type=='top')
{
$sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description
From dede_arctype where reid=0 And ishidden<>1 order by sortrank asc limit 0,$row";
}
else if($type=="son")
{
//if($_sys_globals['typeid']>0) $typeid = $_sys_globals['typeid'];
if($typeid==0) {
return '';
}
$sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description
From dede_arctype where reid='$typeid' And ishidden<>1 order by sortrank asc limit 0,$row";
}
else if($type=="self")
{
if($reid==0) {
return '';
}
$sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description
Fromdede_arctype
where reid='$reid' And ishidden<>1 order by sortrank asc limit 0,$row";
}
//And id<>'$typeid'
$needRel = false;
$dtp2 = new DedeTagParse();
$dtp2>SetNameSpace("field","[","]");
$dtp2>LoadSource($innertext);
$dsql2 = clone $dsql;
$dsql>SetQuery($sql);
$dsql>Execute();
$line = $row;
//检查是否有子栏目,并返回rel提示(用于二级菜单)
if(ereg(':rel', $innertext)) $needRel = true;
if(empty($sql)) return '';
$dsql>SetQuery($sql);
$dsql>Execute();
$totalRow = $dsql>GetTotalRow();
$GLOBALS['autoindex'] = 0;
for($i=0;$i < $line;$i++)
{
if($col>1) $likeType .= "
for($j=0;$j
{
if($col>1) $likeType .= "
r
";
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!='' )
{
if($currentstyle!='')
{
$linkOkstr = $currentstyle;
$row['typelink'] = GetOneTypeUrlA
这样可以实现根据不同类型获取顶级栏目和子栏目列表,适用于多级导航需求。
h3 使用标签调用栏目
2、调用当前栏目的名称:
{dede:field name="typename"/}
3、调用该顶级频道下所有字栏目,例如调用5条:
{dede:channel type='son' row='5'} <li><a href="[field:typeurl/]">[field:typename/]</a></li> {/dede:channel}
4、调用指定ID的栏目,但只能调用一个:
{dede:type typeid='栏目ID'}<a href="[field:typeurl/]">[field:typename/]</a>{/dede:type}
如果要调用多个指定ID的栏目,可以重复多次调用该标签。
5、调用多级栏目:
{dede:channel type='son' noself='yes'} <a href="[field:typelink/]">[field:typename/]</a><br /> {/dede:channel}
6、调用指定ID的栏目文章和栏目名称一起调用:
{dede:arclist typeid='1' row='6' titlelen='42'} <span><a href="[field:typeurl/]" target="_blank">[[field:typename/]]</a></span> <a href="[field:arcurl/]" target="_blank">[field:title/]</a> {/dede:arclist}
h3 FAQs(相关问答)
如何调用多个指定ID的栏目?
如果需要调用多个指定ID的栏目,可以重复多次调用{dede:type}
标签。
{dede:type typeid='1'}<a href="[field:typeurl/]">[field:typename/]</a>{/dede:type} {dede:type typeid='2'}<a href="[field:typeurl/]">[field:typename/]</a>{/dede:type} {dede:type typeid='3'}<a href="[field:typeurl/]">[field:typename/]</a>{/dede:type}
这样可以分别调用ID为1、2、3的栏目。
如何在首页调用单页栏目的内容?
在首页调用单页栏目的内容,可以使用以下代码:
{dede:field name='body' function='GetTopTypename(@me)'/}
这将调用单页栏目的主要内容。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1222478.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复