在网站建设中,为数据库表添加字段以满足特定需求是一种常见的操作。本文将详细介绍如何为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,从而增强网站的功能性和灵活性。