在网站建设中,为数据库表添加字段以满足特定需求是一种常见的操作。本文将详细介绍如何为DedeCMS系统中的dede_arctype表添加一个新字段,并实现其在模板和标签中的调用功能。


首先,在数据库中给dede_arctype表增加一个字段。请注意,表前缀可能因站点设置而异,不一定为“dede_”。例如,新增的字段名为typenameng,用于存储栏目的英文名称。当然,您可以根据需要更改字段名。


接下来,找到并编辑dede\\\\templets目录下的catalog_edit.htm文件。定位到以下代码段:



栏目名称:



在其下方添加如下代码:



栏目英文名称:



然后,打开dede\\\\catalog_edit.php文件,找到以下代码:


$upquery = "UPDATE `#分隔符@__arctype` SET
issend='$issend',
sortrank='$sortrank',
typename='$typename',

在其中添加红色部分代码:


typenameng='$typenameng',

至此,字段添加完成。调用方式为:{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);
    

    通过以上步骤,您可以在DedeCMS中成功添加并调用新的字段typenameng,从而增强网站的功能性和灵活性。