在网站建设过程中,有时需要为Dedecms CMS程序的栏目添加英文名称。以下是一个详细的方法步骤,帮助您实现这一功能。


一、涉及文件(请先备份):


  • 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 '';
        

三、修改 catalog_add.php 文件


打开 dede/catalog_add.php 文件,查找 v5.7 版本中第65行:


在65行 typename 后面增加【typenameen,】,并在66行 '~typename~' 后增加【'~typenameen~',】。


四、修改 catalog_edit.php 文件


打开 dede/catalog_edit.php 文件,查找 v5.7 版本中第41行:


在 typename='$typename', 后面增加一行 【typenameen='$typenameen',】。


五、修改 catalog_add.htm 文件


打开 dede/templets/catalog_add.htm 文件,查找 v5.7 版本中252行,在该行后换行增加以下代码:



    英文名称:
    

        

六、修改 catalog_edit.htm 文件


打开 dede/templets/catalog_edit.htm 文件,查找 v5.7 版本中219行,在该行后换行增加以下代码:



    英文名称:
     
    (栏目模板里用{dede:field.typenameen /}调用)

        

七、channel 标签支持


如果需要在 channel 标签中使用英文名称,请修改 include/taglib/channel.lib.php 文件:


第一处:


if($type=='top')
{
    $sql = "SELECT id,typename,typenameng,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,typenameng,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,typenameng,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,typenameng,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();
}
        

完成以上步骤后,即可在后台添加和调用英文名称。英文名称的调用标签为 {dede:field.typenameen /}。