在网站开发过程中,有时我们需要对数据库和模板文件进行修改,以满足特定的功能需求。以下是如何在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);
这样就完成了所有必要的修改,确保了新字段能够在前端正常显示。