phpcms栏目增加多图片上传功能

phpcms虽然字段里边有多图上传字段,但是我们在其他地方却无法想单图上传那样,随意使用,单图调用的代码是:
  1. <?php echo form::images('info[image]''image', $image, 'content');?> 
但是却没有多图调用的方法,添加方法如下:

(1)找到phpcms/libs/classes/form.class.php添加多图上传方法:
  1. /** 
  2.      * 多图上传 
  3.      * @param string    $name       表单名称 
  4.      * @param string    $id         文件列表ID 
  5.      * @param string    $alowexts   允许上传的文件格式 
  6.      * @param string    $buttonname 上传按钮名称 
  7.      * @param string    $ext        表单扩展属性 如果 js事件等 
  8.      * @param string    $modelname  模块名称 
  9.      */ 
  10.     public static function muupimages($name, $id = '', $value = '', $moudle='content', $catid='', $size = 50, $class = '', $ext = '', $alowexts = '',$watermark_setting = 0 ){ 
  11.         if(!$id) $id = $name; 
  12.         if(!$size) $size= 50; 
  13.         $authkey = upload_key("10,$alowexts,0"); 
  14.         //$value = string2array($value); 
  15.         $str = '<script type="text/javascript" src="'.JS_PATH.'content_addtop.js"></script>'
  16.         $str .= '<script type="text/javascript" src="'.JS_PATH.'swfupload/swf2ckeditor.js"></script>';; 
  17.         $str .= "<input name="$name" type="hidden" value="1"
  18.             <fieldset class="blue pad-10"
  19.             <legend>图片列表</legend>"; 
  20.         foreach($value as $k => $v){ 
  21.             $str .= "<div id="image_".$name."_".$k."" style='padding:1px'><input type='text' name='".$name."_url[]' value='".$v['url']."' style='width:310px;' ondblclick='image_priview(this.value);' class='input-text'
  22.                 <input type='text' name='".$name."_alt[]' value='".$v['alt']."' style='width:160px;' class='input-text'> <a href="javascript:remove_div('image_".$name."_".$k."')">移除</a></div> 
  23.             "; 
  24.         } 
  25.         $str .= '<center><div class="onShow" id="nameTip">您最多可以同时上传 <font color="red">10</font> 张</div></center> 
  26.                 <div id="'.$id.'" class="picList"></div> 
  27.             </fieldset> 
  28.             <div class="bk10"></div>'; 
  29.         $str .= "<input type="button" class="button" value='".L('imagesupload')."' onclick="javascript:flashupload('{$id}_images''".L('attachmentupload')."','{$id}', change_images,'10,$alowexts,0','$moudel','0''$authkey')">"; 
  30.         return $str; 
  31.     } 
(2)找到phpcmsmodulesadmintemplates栏目新增(category_add.tpl.php)和修改(category_edit.tpl.php)的页面,在合适位置添加调用代码
  1. <?php echo form::muupimages('photo''photo', $info['photo'], 'content');?> 
第一个photo是对应name,第二个photo是对应input的id,第三个参数$info['photo']是传递进来的值,第四个参数表示content模块,

(3)在phpcmsmodulesadmincategory的add和edit方法里边添加接受组图的方法:
  1. //所有的图片url 
  2. $photo = $_POST['photo_url']; 
  3.             //取得图片说明 
  4.             $photo_alt = isset($_POST['photo_alt']) ? $_POST['photo_alt'] : array(); 
  5.             $array = $temp = array(); 
  6.             if(!empty($photo)) { 
  7.                 foreach($photo as $key=>$pic) { 
  8.                     $temp['url'] = $pic; 
  9.                     $temp['alt'] = str_replace(array('"',"'"),'`',$photo_alt[$key]); 
  10.                     $_POST['info']['photo'][] = $temp; 
  11.                 } 
  12.             } 
这样组图的字段信息就存储到了$_POST['info']['photo']字段里边了

(4)对应修改的时候需要在phpcmsmodulesadmincategory的edit方法的:
  1. if($r) extract($r); 
之前加个对刚才你的组图字段的转换,因为默认 存储的是json我们需要转成数组格式:
  1. if(array_key_exists('photo', $r)){ 
  2.                 $r['photo'] = string2array($r['photo']); 
  3.             } 
这样就可以正确读取到组图列表信息了,效果如图:






联系我们

在线咨询:点击这里给我发消息

邮件:w420220301@qq.com