dedecms 中设置获取顶级栏目下的子栏目,点击顶级栏目,子栏目位置显示的却是子栏目中的文章列表

dedecms 中设置获取顶级栏目下的子栏目,点击顶级栏目,子栏目位置显示的却是子栏目中的文章列表,第1张

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}

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » dedecms 中设置获取顶级栏目下的子栏目,点击顶级栏目,子栏目位置显示的却是子栏目中的文章列表

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情