在我们添加文章的时候,往往需要同时上传该文章的多个相关附件,EmpireCMS 本身并未实现改功能。但利用多值字段的特点则可以很好的为我们解决这个问题。
详细步骤:
一、增加上传字段
1、登录后台 > 系统设置 > 数据表与系统模型 > 管理数据表,选择需要增加字段的数据表 > 管理字段 > 增加字段。
2、填写要增加字段的基本信息,字段名 > attachs(可自定义),字段类型 > 中型字符型,输入表单显示元素 > 多值字段,多值字段元素格式 > 设置列数:2(这里我们选择2列,也就是一组数据有两个数值,分别为附件名称与附件地址),确认提交。
3、回到字段管理,修改新增加的字段,我们可以看到系统自动为我们填写了【输入表单替换html代码】,把里面的代码全部复制到编辑器。
二、获取上传代码
1、字段管理 > titlepic > 修改系统字段,查看【输入表单替换html代码】,我们可以看到系统默认字段【标题图片】的实现代码。
<input name="titlepic" type="text" id="titlepic" value="<?=$ecmsfirstpost==1?"":ehtmlspecialchars(stripSlashes($r[titlepic]))?>" size="45"> <a onclick="window.open('ecmseditor/FileMain.php?type=1&classid=<?=$classid?>&infoid=<?=$id?>&filepass=<?=$filepass?>&sinfo=1&doing=1&field=titlepic<?=$ecms_hashur[ehref]?>','','width=700,height=550,scrollbars=yes');" title="选择已上传的图片"><img src="../data/images/changeimg.gif" border="0" align="absbottom"></a>
2、因为我们把第二列作为附件地址,所有 input.name = attachs_2[],input.id = attachs_2_ + 索引。在 window.open 的参数中,type 为上传类型,其中 1 = 图片,2 = FLASH,3 = 多媒体,0 = 其他,field = input.id = attachs_2_ + 索引。
三、修改默认代码
代码共有 85 行(v 7.2),要添加多文件上传,我们需要更改以下三个部分:
1、<script> 与 </script> 之间的代码,主要负责实现扩展数量功能。在其中的: <input type="text" name="attachs_2[]" id="attachs_2_'+j+'" value=""> 后追加 <a onclick="window.open(\'ecmseditor/FileMain.php?type=0&classid=<?=$classid?>&infoid=<?=$id?>&filepass=<?=$filepass?>&sinfo=1&doing=1&field=attachs_2_'+j+'<?=$ecms_hashur[ehref]?>\',\'\',\'width=700,height=550,scrollbars=yes\');" title="选择已上传的文件"><img src="../data/images/changeimg.gif" border="0" align="absbottom"></a>
2、if($ecmsfirstpost==1) 与 else,为文章添加时代码。替换其中的: <input type="text" name="attachs_2[]" id="attachs_2_<?=$i?>" value=""> 后追加 <a onclick="window.open('ecmseditor/FileMain.php?type=0&classid=<?=$classid?>&infoid=<?=$id?>&filepass=<?=$filepass?>&sinfo=1&doing=1&field=attachs_2_<?=$i?><?=$ecms_hashur[ehref]?>','','width=700,height=550,scrollbars=yes');" title="选择已上传的文件"><img src="../data/images/changeimg.gif" border="0" align="absbottom"></a>
3、else 与 } ,为文章编辑时代码。替换其中的: <input type="text" name="attachs_2[]" id="attachs_2_<?=$j?>" value="<?=$mvf_field[1]?>"> 后追加 <a onclick="window.open('ecmseditor/FileMain.php?type=0&classid=<?=$classid?>&infoid=<?=$id?>&filepass=<?=$filepass?>&sinfo=1&doing=1&field=attachs_2_<?=$i?><?=$ecms_hashur[ehref]?>','','width=700,height=550,scrollbars=yes');" title="选择已上传的文件"><img src="../data/images/changeimg.gif" border="0" align="absbottom"></a>
四、修改模型中的字段属性,选择增加字段的数据表 > 管理系统模型 > 选择增加此功能的模型 > 修改。在【选择本模型的字段项】中,找到增加的字段,勾选其录入项、可增加、可修改属性。
好了,现在可以新建个栏目测试一下了!
另:关于前台投稿是不能使用此方法的,因为上传调用的页面 FileMain.php 为后台页面,前台用户没有权限调用,如果需要前台实现此功能,这里提供给大家一个思路,在需要更改的三个部分后面追加 <input type="file" name="name[]">后,利用 【前台增加信息处理函数】 与 【前台修改信息处理函数】来上传文件与存储地址。
|