在制作dedecms模板的过程中经常会用到一些默认dedecms没有的字段,为此以dedecms以及以上的基础上做了一个关于dedecms自定义字段的添加和自定义字段在dedecms模板中的调用方法。在制作dedecms模板的过程中经常会用到一些默认dedecms没有的字段,如:
这里的价格的调用,dedecms默认是没有这个标签的,那我们如果实现这个价格的调用呢?在这里我们就需要使用到dedecms模型里的自定义字段了,下面我们以dedecms5.6为例介绍一下dedecms字段的添加和调用方法。(5.3版本后的所以版本的自定义字段的添加和调用相同)首先我们打开网站后台,点击左侧的“核心”,找到模型管理,这是就可以看到“内容模型管理”的选项卡了。如图:
点击进入“内容模型管理”这是右侧会显示相应的各个模型了,下面我们以文章模型为例讲解自定义字段的添加。
点击右侧的更改小图标进入文章模型的管理页面。这是我们会看到有“基本设置”和“字段管理”2个选项。我们选择字段管理选项进入。
进入以后我
们会看到有个“添加新字段”的按钮
点击“添加新字段”按钮进入,这时看到的就是添加字段的界面了。我们以上面讲到的价格字段为例进行一个实例操作的讲解,如下图:
全部添加好后点击确定即可。然后我们进入栏目管理,开始添加内容,打开添加内容页面后我们会看到一个关于价格的内容输入框。
这个就是我们刚刚添加到关于价格的字段。到这里就已经讲完关于dedecms自定义字段的一个添加过程,对于自定义字段的添加需要活学活用才能将这个功能的潜力完全发挥出来。下面讲一下关于自定义字段在dedecms模板中的的调用。我们以在首页调用为例: Dedecms模板中默认调用文章标题的标签如下:
{dede:arclistrow=6 titlelen=32} <li><ahref="[field:arcurl/]">[field:title/]</a></li>{/dede:arclist}
那么我们调用自定义字段就是在这个基础上加以修改来实现的,我们还是以最开始提到的价格为例,具体标签表现为:
{dede:arclist row=8 titlelen=32addfields='jiage' channelid='1'} <li><span>¥[field:jiage/]起</span><ahref="[field:arcurl/]">[field:title/]</a></li>{/dede:arclist}
我们可以看到和第一个标签比较起来有2个不同的地方: 1, 在{dede:arclist row=6 titlelen=32}处多出了addfields='jiage' channelid='1' ,其中addfields='jiage'表示的是指定要获得的字段 addfields='字段1,字段' channelid='1' 表示的是该字段是属于哪个模型的,我们这里是指文章模型里添加到所以channelid=的值为1..。确定文章模型的的ID是多少,我们里在文章模型管理里找到如下图红色框内的就是模型ID.
2,还多出一个“[field:jiage/]”这个就是我们在添加字段时添加到字段名了。如果你需要在列表页中的{dede:list}里调用自定义字段的话直接添加 “[field:jiage/]” 就可以了,但前提条件是你添加字段的时候必须选择了该项参数。
以上就是关于dedecms自定义字段的添加和调用方法。另外也可以通过在数据库中添加字段,修改模板文件也能实现的。比如编辑栏目的时候,添加自己想要的栏目的自定义设置,比如添加栏目关键字等等。下面是具体的操作。 第一步:我们要进去mysql 数据库里添加字段,自己命名好!比如我下面添加了一个栏目搜索关键字字段,当然你字段可以自己新建,找到表dede_arctype (这个是栏目模型的数据库表,前面是你安装的表名)然后点击
在点击添加字段
添加字段
到这里数据库字段添加好了。接下来我们开始做后台。大家写找到后台栏目管理模版!要更改的 2个 D:\www\dede\templets 模版:catalog_add.htm、catalog_edit.htm 下面就演示一个
然后添加字段表单,这个一般大家都会的我添加的代码是:
<tr> <tdheight="65">栏目搜索关键字:</td> <td> <textarea name="lanmukeywrod"cols="70" rows="4" id="lanmukeywrod" ><?php echo$myrow['lanmukeywrod']?></textarea> </td> </tr>
这里注意了。表单的name 和id 要和添加的 mysql表字段一样,不应的话。还要多写个取值代码。一样的话。默认dedecms会自动取的,然后我们做最后一部,把数据添加进去。大家找到: D:\www\dede\catalog_edit.php 目录可能和大家不一样也就是后台里面的 catalog_edit.php,catalog_add.phpcatalog_edit.php要改的地方有:38行
$upquery ="Update `dede_arctype` set issend='$issend', sortrank='$sortrank',typename='$typename', typedir='$typedir', isdefault='$isdefault',defaultname='$defaultname', issend='$issend', ishidden='$ishidden',channeltype='$channeltype', tempindex='$tempindex', templist='$templist',temparticle='$temparticle', namerule='$namerule', namerule2='$namerule2',ispart='$ispart', corank='$corank', description='$description',keywords='$keywords', moresite='$moresite', `cross`='$cross',`content`='$content', `crossid`='$crossid', `smalltypes`='$smalltypes'$uptopsql where id='$id' ";
sql语句里面添加我们刚才的字段进去。也就是下面这个代码
$upquery = "Update `dede_arctype` setissend='$issend', sortrank='$sortrank', typename='$typename',typedir='$typedir', isdefault='$isdefault', defaultname='$defaultname',issend='$issend', ishidden='$ishidden', channeltype='$channeltype',tempindex='$tempindex', templist='$templist', temparticle='$temparticle',namerule='$namerule', namerule2='$namerule2', ispart='$ispart',corank='$corank', description='$description', keywords='$keywords',moresite='$moresite', `cross`='$cross', `content`='$content',`crossid`='$crossid', `smalltypes`='$smalltypes',`lanmukeywrod`='$lanmukeywrod' $uptopsql where id='$id' ";
看到了这个是添加的:`lanmukeywrod`='$lanmukeywrod',这个是更新栏目的。catalog_add.php添加。也是同样的办法。更改地址有:63行和196行。也是同样办法。添加字段信息到sql里去更改后的代码:63行:
$queryTemplate ="insert into`dede_arctype`(reid,topid,sortrank,typename,typedir,isdefault,defaultname,issend,channeltype,tempindex,templist,temparticle,modname,namerule,namerule2,ispart,corank,description,keywords,moresite,siteurl,sitepath,ishidden,`cross`,`crossid`,`content`,`smalltypes`,`lanmukeywrod`)Values('~reid~','~topid~','~rank~','~typename~','~typedir~','$isdefault','$defaultname','$issend','$channeltype','$tempindex','$templist','$temparticle','default','$namerule','$namerule2','0','0','','','0','','','0','0','0','','','$lanmukeywrod')";
添加了 lanmukeywrod 196行:
$in_query ="insert into`dede_arctype`(reid,topid,sortrank,typename,typedir,isdefault,defaultname,issend,channeltype,tempindex,templist,temparticle,modname,namerule,namerule2,ispart,corank,description,keywords,moresite,siteurl,sitepath,ishidden,`cross`,`crossid`,`content`,`smalltypes`,`lanmukeywrod`)Values('$reid','$topid','$sortrank','$typename','$typedir','$isdefault','$defaultname','$issend','$channeltype','$tempindex','$templist','$temparticle','default','$namerule','$namerule2','$ispart','$corank','$description','$keywords','$moresite','$siteurl','$sitepath','$ishidden','$cross','$crossid','$content','$smalltypes','$lanmukeywrod')";
下面说下如何调用到前台
{dede:field.lanmukeywrod/}
在模版里调用这个就可以了,如果大家是别的字段也是一样的调用,后面换成字段名称就可以了。另外关于自定义字段的完全删除。在修改网站的时候由于需要增加自定义字段,后来不需要的时候,发现自定义字段无法删除。于是找到了数据库的dede_addonarticle这个表,看到了自定义字段,删除后,在后台的模型中看到自定义字段还存在,很多朋友都是做到这一步,就不知道如何做了。而且发布文章的时候还有错误,提示自定义字段找不到,而无法发布文章。原来在dede_channeltype这里面也就是模型配置里面还存在这个自定义字段,进入数据库dede_channeltype表下,然后点击浏览内容,你会发现fieldset字段里面的内容还存在这个自定义字段。以下为引用的内容:
<field:bodyitemname='文章内容' type='htmltext'isnull='true' default='' rename='' page='split'/><field:daima itemname="代码" autofield="1" notsend="1"type="htmltext" isnull="true" islist="0"default="" function="" maxlength=""page=""> </field:daima> 只要我们删除<field:你的字段></field>
这样就可以了,问题解决了。