如何修改dede新建顶级栏目id

如何修改dede新建顶级栏目id,第1张

先说明一下,很多朋友和我一样,删除了部分栏目,导致部分栏目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_base.php文件

这个文件依然保存着曾经删除的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调用二级栏目大家都会调用,但要调用三级栏目,就有点麻烦了,如下样式的三级栏目dede如何调用呢?如下:

----------------------------------------A级主栏目

+顶级栏目

+二级栏目

+三级栏目(A)

+三级栏目(B)

+三级栏目(C)

+二级栏目

+三级栏目(D)

+三级栏目(E)

+三级栏目(F)

----------------------------------------B级主栏目

+顶级栏目

+二级栏目(G)

+二级栏目(H)

+二级栏目(I)

{dede:channelartlist typeid=6 row=4} (注:这是顶级栏目id)

{dede:field name='typename'/} (注:这是二级栏目名称)

{dede:sql sql='Select * from dede_arctype where reid=~id~

ORDER BY id limit 0,7'}

[field:typename/]

(注:这是三级栏目的静态路径和栏目名称)

{/dede:sql}

{/dede:channelartlist}

因为[field:typedir /]在数据库存储的路径包括{cmspath}这个字符串,所以我们必须处理一下,就用到织梦(dedecms)自带的cn_substr这个系统函数,这里简要说一下这个函数的参数,@me是当前字段值,也就是取出的[field:typedir /]这个值,200和9表示从第9个字符位置( (不包括这个字符))开始截取200个字符。

typeid='' 指定顶级栏目就可以啦,可能有很多人因为各种需要,不论是增加密度还是 *** 作方面的便捷性增强用户体验,会涉及到dede需要增加三级或者更深层级导航的需求,代码如下:

{dede:type typeid='3'}[field:typename/]{/dede:type} (如果上面二级名称掉不出来可以用这个)

{dede:sql sql='Select * from dede_arctype where reid=~id~'}

[field:typename/]

{/dede:sql}

{dede:channelartlist typeid='3'}

{dede:field name='typename'/}

{/dede:channelartlist}

以上代码能够实现理论上无限层级深度的导航菜单调用,哈哈,当然,只要你需要,就能满足,显示效果需要CSS来修饰一下。

function GetTopTypeurl($id)

{

    global $dsql

    $row = $dsql->GetOne("SELECT typedir,topid FROM dede_arctype WHERE id= $id")

    if ($row['topid'] == '0')

    {

        $url=str_replace('{cmspath}','',$row['typedir'])

        return $url

    }

    else

    {

        $row1 = $dsql->GetOne("SELECT typedir FROM dede_arctype WHERE id= $row[topid]")

        $url1=str_replace('{cmspath}','',$row1['typedir'])

        return $url1

    }

}

这样就可以解决,从数据库中提取出当前顶级栏目链接,同时替换路径中的{cmspath}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9741638.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存