用织梦建站的时候碰到调用中文栏目名称的同时要显示英文栏目名称的情况怎么办?下面介绍下给织梦cms增加英文栏目名称的方法。
一:我们先备份下面几个文件,因为涉及到修改:
dede/catalog_add.php
dede/catalog_edit.php
dede/templets/catalog_add.htm
dede/templets/catalog_edit.htm
二、新加字段typenameen
后台执行SQL(前缀默认为dede_具体前缀根据自己网站修改):
altertable`dede_arctype`add`typenameen`char(100)NOTNULLdefault'';
三、打开dede/catalog_add.php查找:v5.7在第65行。
在65行typename后面增加【typenameen,】,在66行'~typename~'增加【'~typenameen~',】。
四、打开dede/catalog_edit.php查找:v5.7在第41行。
在typename='$typename',后面增加一行【typenameen='$typenameen',】,如下图:
五、打开dede/templets/catalog_add.htm查找:v5.7在252行,在252行换行增加:
<html> <head></head> <body> <font color="red">英文名称:</font> <input name="typenameen" type="text" id="typenameen" size="30" class="iptxt" /> </body> </html>
如下图:
六、打开dede/templets/catalog_edit.htm 查找:v5.7在219行。在219行换行增加:
<html> <head></head> <body> 英文名称: <input name="typenameen" type="text" id="typenameen" size="30" value="<?php echo $myrow['typenameen']?>" class="iptxt" /> (栏目模板里用{dede:field.typenameen /}调用) </body> </html>
如下图:
设置到此就完成了!英文调用的标签是:{dede:field.typenameen/}
再过来你的后台看看效果如下:
修改到这里你肯定美滋滋的以为大功告成了,拿去{dede:channel}中一调用,例如:
{dede:channel type='son' row='10' typeid='1'} <li><a href='[field:typeurl/]'>[field:typename/][field:typenamen/]</a></li> {/dede:channel}
发现中文名称正常,英文名称空白,没有调出来。
这里有很重要的一步,想要在channel中使用,则还要修改一个文件,找到include\taglib\channel.lib.php
在里面要把typenamen添加进去。如下;
第一处:
if($type=='top') { $sql = "SELECT id,typename,typenameen,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath From `#分隔符@__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 `#分隔符@__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 `#分隔符@__arctype` WHERE reid='$reid' And ishidden<>1 order by sortrank asc limit 0, $line "; }
第二处:
//如果用子栏目模式,当没有子栏目时显示同级栏目 if($type=='son' && $reid!=0 && $totalRow==0) { $sql = "SELECT id,typename,typenameen,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath FROM `#分隔符@__arctype` WHERE reid='$reid' And ishidden<>1 order by sortrank asc limit 0, $line "; $dsql->SetQuery($sql); $dsql->Execute(); }
增加查询字段就可以在channel中使用了,如下面代码这样就可以调用英文栏目名称了;
{dede:channel type ='top' row='5'} <li><a href="[field:typelink/]">[field:typename/]</a><span>[field:typenameen/]</span></li> {/dede:channel}
还有type,channelartlist等标签页是在相应的lib类中添加查询的字段,具体可以参考这里channel中使用的修改方法修改试试。
如果内容有帮助,就点个赞吧!