在网站开发过程中,有时我们需要对数据库和模板文件进行修改,以满足特定的功能需求。以下是如何在DedeCMS中添加一个自定义字段“typenameng”,并确保其能在前台正确显示的详细步骤。

首先,在数据库中找到dede_arctype表(具体表名可能因站点前缀不同而有所变化),为其新增一个字段typenameng

接着,定位到dede\\\\templets目录下的catalog_edit.htm文件。

在该文件中,找到如下代码片段:



栏目名称:




在其下方添加以下内容:



栏目英文名称:




然后打开dede\\\\catalog_edit.php文件,找到更新语句部分,并在其中加入新字段:


$upquery = "UPDATE `#分隔符@__arctype` SET
issend='$issend',
sortrank='$sortrank',
typename='$typename',
typenameng='$typenameng',
typedir='$typedir',
isdefault='$isdefault',
defaultname='$defaultname'";

注意,这里的“分隔符”需要替换为实际使用的字符。

完成上述操作后,即可通过标签{dede:field name='typenameng'/}调用新添加的字段值。

若希望在channel标签中使用该字段,例如:


{dede:channel type='son' row='10' typeid='1'}
  • [field:typename/][field:typenameng/]
  • {/dede: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();
    }
    


    最后,在include\\\\taglib\\\\channel.lib.php文件的第140行附近,添加以下代码以支持样式替换:

    
    $linkOkstr = str_replace("~typenameeng~",$row['typenameeng'],$linkOkstr);
    

    这样就完成了所有必要的修改,确保了新字段能够在前端正常显示。