织梦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="

下面分享在百度网盘的修改文件,大家对照下吧,网上分享的方法有所残缺。

链接:https://pan.baidu.com/s/1spaIa__YHrtWr12gq8OCTA

提取码:gtjz

解压密码xuejiqiao1017

+