在网站建设过程中,有时需要为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行,在该行后换行增加以下代码:
<tr>
<td class='bline' height="26" style="padding-left:10px;"><font color='red'>英文名称:</font></td>
<td class='bline'><input name="typenameen" type="text" id="typenameen" size="30" class="iptxt" /></td>
</tr>
六、修改 catalog_edit.htm 文件
打开 dede/templets/catalog_edit.htm 文件,查找 v5.7 版本中219行,在该行后换行增加以下代码:
<tr>
<td class='bline' height="26" style="padding-left:10px;">英文名称:</td>
<td class='bline'><input name="typenameen" type="text" id="typenameen" size="30" value="<?php echo $myrow['typenameen']?>" class="iptxt" />
(栏目模板里用{dede:field.typenameen /}调用)</td>
</tr>
七、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 /}。