织梦dedecms网站栏目增加英文名称及调用方法
有时候网站需要中英文导航,而又想保留导航的hover中的样式,那么就需要进行织梦栏目的二次开发了。网上搜索了很多方法,基本都是负责人家的方法,残缺不全的。今天我整理,并亲自操作和修改,给大家完整奉献代码。
一、方法步骤:
涉及到文件如下(注意备份):
dede/catalog_add.php
dede/catalog_edit.php
dede/templets/catalog_add.htm
dede/templets/catalog_edit.htm
二、新加字段 typenameen
后台执行SQL(前缀默认为dede_ 具体前缀根据自己网站修改):
alter table `dede_arctype` add `typenameen` char(100) NOT NULL default '';
(sql执行在后台系统SQL命令行工具里执行即可)
二、打开dede/catalog_add.php 查找:v5.7在第65行。
在65行typename后面增加【typenameen,】,在67行'~typename~'增加【'~typenameen~',】。
添加字段的前后位置不重要,重要的是代码要写规范,注意符号的中英文状态!
三、打开dede/catalog_edit.php 查找:v5.7在第41行。
在typename='$typename',后面增加一行 【typenameen='$typenameen',】。
四、打开dede/templets/catalog_add.htm 查找:v5.7在252行。
添加:
英文名称: |
五、打开dede/templets/catalog_edit.htm 查找:v5.7在219行。
在219行换行增加:
英文名称: | (栏目模板里用{dede:field.typenameen /}调用) |
而在head里调用导航英文标题的时候就是用标签:{dede:field.typenameen /}
后台效果如下:
(最终导航效果如下:)
这个导航调用{dede:field.typenameen /}标签在未修改以下讲解的代码之前会出错的。我这里使用的是~typenameen~,如未修改以下代码,是无法使用的。
下面的步骤很关键:
找到include\taglib\channel.lib.php
78行开始修改添加typenameen
if($type=='top')
{
$sql = "SELECT id,typename,typenameen,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
From `xjq_arctype` WHERE reid=0 And ishidden<>1 order by sortrank asc limit 0, $line ";
}
else if($type=='son')
{
if($typeid==0) return '';
$sql = "SELECT id,typename,typenameen,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
From `xjq_arctype` WHERE reid='$typeid' And ishidden<>1 order by sortrank asc limit 0, $line ";
}
else if($type=='self')
{
if($reid==0) return '';
$sql = "SELECT id,typename,typenameen,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
FROM `xjq_arctype` WHERE reid='$reid' And ishidden<>1 order by sortrank asc limit 0, $line ";
}
第108行修改添加typenameen:
//如果用子栏目模式,当没有子栏目时显示同级栏目
if($type=='son' && $reid!=0 && $totalRow==0)
{
$sql = "SELECT id,typename,typenameen,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
FROM `xjq_arctype` WHERE reid='$reid' And ishidden<>1 order by sortrank asc limit 0, $line ";
$dsql->SetQuery($sql);
$dsql->Execute();
}
以上修改完之后想调用~typenameen~需要在第140行,也就是在$linkOkstr = str_replace("~typename~",$row['typename'],$linkOkstr);添加
$linkOkstr = str_replace("~typenameen~",$row['typenameen'],$linkOkstr);
所以最终的调用代码就是:
{dede:channel type='top' row='8' currentstyle="
"}
{/dede:channel}
下面分享在百度网盘的修改文件,大家对照下吧,网上分享的方法有所残缺。
链接:https://pan.baidu.com/s/1spaIa__YHrtWr12gq8OCTA
提取码:gtjz
解压密码xuejiqiao1017
-
用微信 “扫一扫”
将文章分享到朋友圈。
关注公众号:xue-jiqiao
本文版权归原作者所有,转载请注明原文来源出处,学技巧网站制作感谢您的支持!