dedecms 中设置获取顶级栏目下的子栏目,点击顶级栏目,子栏目位置显示的却是子栏目中的文章列表
channelartlist获取当前频道的下级栏目的内容列表标签
基本语法:
{dede:channelartlist row=6}
<dl>
<dt><a href='{dede:field name='typeurl'/}'>{dede:field name='typename'/}</a></dt>
<dd>
{dede:arclist titlelen='42' row='10'} <ul class='autod'>
<li><a href="[field:arcurl /]">[field:title /]</a></li>
<li>([field:pubdate function="MyDate('m-d',@me)"/])</li>
</ul>
{/dede:arclist}
</dl>
{/dede:channelartlist}
参数说明:
typeid = '0' 频道ID,多个请用","分隔
row = '20' 获取的栏目返回值
其他说明:
除了宏标记外,channelArtlist 是唯一一个可以直接嵌套其它标记的标记,不过仅限于嵌套
{dede:type}{/dede:type} 和 {dede:arclist}{/dede:arclist} 两个标记。
底层模板变量:
包含{dede:type}{/dede:type}及{dede:arclist}{/dede:arclist}下面所有底层模板变量。
{dede:field name='typeid' runphp='yes'}
global $dsql;
/获取当前栏目id/
$typeid = @me;
$query = "SELECT reid FROM dede_arctype where id = $typeid";
$rs = $dsql->GetOne($query);
$reid = $rs['reid'];//获取到栏目的上级栏目
/获取上级栏目id/
$query2 = "SELECT FROM dede_arctype where id = $reid";
$typerow = $dsql->GetOne($query2);
/输出上级栏目信息/
$typename = $typerow['typename'];
$link = GetTypeUrl($typerow['typeid'],MfTypedir($typerow['typedir']),$typerow['isdefault'],$typerow['defaultname'],$typerow['ispart'],$typerow['namerule2'],$typerow['moresite'],$typerow['siteurl'],$typerow['sitepath']);
@me = "<a href='/{$link}'>$typename</a>";
{/dede:field}
要调用某个栏目的下级栏目名称,参考下面的标签
{dede:channel row='20' type ='son' typeid ='2' } 此处是底层标签 {/dede:channel}
row='20'表示调用20个栏目名称
type ='son'表示调用下级栏目
typeid ='2'表示父栏目id为2
关于底层标签,诸如栏目名称,链接等等就不再赘述了吧
先说明一下,很多朋友和我一样,删除了部分栏目,导致部分栏目id空缺,结果是生成HTML时老是出错。现在我说下我的情况:
我的网站建立了十个顶级栏目,七十多个二级栏目,由于使用不便,删除了三个二级栏目,导致空缺几个id
打个比方我删除了id是41的栏目,生成HTML时,生成到这个栏目时就出错,很不爽!!
现在我们调整一下栏目id,把后面的提上来弥补41,也就是说利用sql语法从数据库把id42替换成41,id43替换成42……依此类推。
具体修改方法:
1、替换所需的SQL语法
Quote:
UPDATE `表名` SET `字段` = REPLACE(`字段`,'替换内容','替换值');
2、需要替换id的数据表
由于我使用的是下载频道,所以需要修改一下数据表,你如果用的是文章根据需要在调整:
dede_addonsoft
dede_arctype
dede_archives
dede_cache_feedbackurl
dede_full_search
dede_tag_list
在这几个表中,代表栏目id的字段稍微有些不同,有的是“ID”、“tyeid”或者“feedid”,自己根据数据表来确定到底是哪个字段。
3完成第二步,
打开根目录下data\cache中inc_catalog_basephp文件
这个文件依然保存着曾经删除的id,形式如下:
Copy code
$_Cs[1]=array(0,3,1);
$_Cs[2]=array(0,3,1);
$_Cs[3]=array(0,3,1);
$_Cs[4]=array(0,3,1);
$_Cs[5]=array(0,3,1);
$_Cs[6]=array(0,3,1);
$_Cs[7]=array(0,3,1);
$_Cs[8]=array(0,3,1);
$_Cs[9]=array(0,3,1);
其中cs()括号中代表是二级栏目,array()括号中第一个数字代表是顶级栏目,现在打开网站后台,根据后台的二级栏目与顶级栏目的对应关系修改此文件
保存,刷新后台。
指定栏目--{dede:type typeid='350'}<a href="[field:typelink /]">[field:typename /]</a>{/dede:type}
0条评论