我的网站建立了十个顶级栏目,七十多个二级栏目,由于使用不便,删除了三个二级栏目,导致空缺几个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}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)