因?yàn)槌绦虿恢С诌h(yuǎn)程圖片水印,想通過oss的圖片處理給圖片加水印,開啟了原圖保護(hù)后上傳圖片的時(shí)候很多地方無法顯示圖片,只有通過改代碼實(shí)現(xiàn)了。為了上傳圖片后及時(shí)顯示圖片,需要在圖片結(jié)尾加一個(gè)oss的圖片處理!300,
在下面文件中修改
diy\dayrui\libraries\Field\Image.php
修改了下面代碼增加了.'!300' 圖片上傳后不顯示圖片,查看源代碼圖片后面沒有接!300,但是保存文章后會(huì)顯示圖片,并且圖片后面接了!300。
$info = array();
if ($value && is_array($value)) {
foreach ($value as $i => $id) {
$info[$i]['id'] = $id;
$info[$i]['file'] = dr_get_file($id).'!300';
}
}
下面是文件的源代碼
<?php
class F_Image extends A_Field {
/**
* 構(gòu)造函數(shù)
*/
public function __construct() {
parent::__construct();
$this->name = '圖片上傳'; // 字段名稱
$this->fieldtype = array('TEXT' => '', 'VARCHAR' => '255'); // TRUE表全部可用字段類型,自定義格式為 array('可用字段類型名稱' => '默認(rèn)長度', ... )
$this->defaulttype = 'VARCHAR'; // 當(dāng)用戶沒有選擇字段類型時(shí)的缺省值
}
/**
* 字段相關(guān)屬性參數(shù)
*
* @paramarray$value值
* @return string
*/
public function option($option) {
$option['count'] = isset($option['count']) ? $option['count'] : 2;
$option['width'] = isset($option['width']) ? $option['width'] : '80%';
$option['fieldtype'] = isset($option['fieldtype']) ? $option['fieldtype'] : '';
$option['uploadpath'] = isset($option['uploadpath']) ? $option['uploadpath'] : '';
$option['fieldlength'] = isset($option['fieldlength']) ? $option['fieldlength'] : '';
return '
<div class="form-group">
<label class="col-md-2 control-label">'.fc_lang('寬度').':</label>
<div class="col-md-9">
<label><input type="text" class="form-control" size="10" name="data[setting][option][width]" value="'.$option['width'].'"></label>
<span class="help-block">'.fc_lang('[整數(shù)]表示固定寬帶;[整數(shù)%]表示百分比').'</span>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">'.fc_lang('文件大小').':</label>
<div class="col-md-9">
<label><input type="text" class="form-control" value="'.$option['size'].'" name="data[setting][option][size]"></label>
<span class="help-block">'.fc_lang('單位MB').'</span>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">'.fc_lang('上傳數(shù)量').':</label>
<div class="col-md-9">
<label><input type="text" class="form-control" value="'.$option['count'].'" name="data[setting][option][count]"></label>
<span class="help-block">'.fc_lang('每次最多上傳的文件數(shù)量').'</span>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">'.fc_lang('遠(yuǎn)程圖片模式').':</label>
<div class="col-md-9">
<div class="radio-list">
<label class="radio-inline"><input type="radio" value="2" name="data[setting][option][autodown]" '.($option['autodown'] == 2 ? 'checked' : '').' > '.fc_lang('自動(dòng)(會(huì)影響發(fā)布速度)').'</label>
<label class="radio-inline"><input type="radio" value="0" name="data[setting][option][autodown]" '.($option['autodown'] == 0 ? 'checked' : '').' > '.fc_lang('關(guān)閉').'</label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">'.fc_lang('保存目錄').':</label>
<div class="col-md-9">
<input type="text" class="form-control" size="50" name="data[setting][option][uploadpath]" value="'.$option['uploadpath'].'">
<span class="help-block">'.fc_lang('目錄中不得包含中文 <br />標(biāo)簽介紹:站點(diǎn)id{siteid}、模塊目錄{module}、年{y}、月{m}、日{(diào)d} <br />例如:{siteid}/{module}/test/,將附件保存至:uploadfile/站點(diǎn)/模塊目錄/test目錄/附件名稱.擴(kuò)展名').'</span>
</div>
</div>
';
}
/**
* 字段輸出
*/
public function output($value) {
return dr_string2array($value);
}
/**
* 獲取附件id
*/
public function get_attach_id($value) {
return dr_string2array($value);
}
/**
* 字段入庫值
*/
public function insert_value($field) {
$my = $this->ci->post[$field['fieldname']];
$data = array();
if ($my) {
foreach ($my as $id) {
if ($id) {
// 下載遠(yuǎn)程圖片
if (strpos($id, 'http') === 0
&& (strpos($id, 'jpg') !== false || strpos($id, 'png') !== false || strpos($id, 'gif') !== false || strpos($id, 'jpeg') !== false)
&& isset($field['setting']['option']['autodown']) && $field['setting']['option']['autodown']) {
// 當(dāng)前作者
$uid = isset($_POST['data']['uid']) ? (int)$_POST['data']['uid'] : $this->ci->uid;
// 附件總大小判斷
if ($uid == $this->ci->uid
&& ($this->ci->member['adminid'] || $this->ci->member_rule['attachsize'])) {
$data = $this->ci->db->select_sum('filesize')->where('uid', $uid)->get('attachment')->row_array();
if ($this->ci->member['adminid']
|| $data['filesize'] <= $this->ci->member_rule['attachsize'] * 1024 * 1024) {
// 可以下載
$file = dr_catcher_data($id);
if (!$file) {
log_message('error', 'Image字段下載遠(yuǎn)程圖片失?。韩@取遠(yuǎn)程數(shù)據(jù)失敗('.$id.')');
} else {
$path = SYS_UPLOAD_PATH.'/'.date('Ym', SYS_TIME).'/';
if (!is_dir($path)) {
dr_mkdirs($path);
}
$fileext = strtolower(trim(substr(strrchr($id, '.'), 1, 10))); //擴(kuò)展名
$filename = substr(md5(time()), 0, 7).rand(100, 999);
if (@file_put_contents($path.$filename.'.'.$fileext, $file)) {
$info = array(
'file_ext' => '.'.$fileext,
'full_path' => $path.$filename.'.'.$fileext,
'file_size' => filesize($path.$filename.'.'.$fileext)/1024,
'client_name' => $id,
);
$this->ci->load->model('attachment_model');
$result = $this->ci->attachment_model->upload($uid, $info);
if (is_array($result)) {
$id = $result[0];
} else {
@unlink($path.$filename.'.'.$fileext);
log_message('error', '編輯器下載遠(yuǎn)程圖片失敗:'.$result);
}
} else {
log_message('error', '編輯器下載遠(yuǎn)程圖片失?。何募懭胧?#39;);
}
}
} else {
// 附件總空間不足
$this->ci->member_model->add_notice($uid, 1, fc_lang('附件可用空間不足,無法下載遠(yuǎn)程圖片'));
}
}
}
$data[] = $id;
}
}
}
// 第一張作為縮略圖
if (isset($_POST['data']['thumb']) && !$_POST['data']['thumb'] && isset($data[0]) && $data[0]) {
$this->ci->data[1]['thumb'] = $data[0];
}
$this->ci->data[$field['ismain']][$field['fieldname']] = dr_array2string($data);
}
/**
* 附件處理
*/
public function attach($data, $_data) {
$data = dr_string2array($data);
$_data = dr_string2array($_data);
if (!isset($_data)) {
$_data = array();
}
if (!isset($data)) {
$data = array();
}
// 新舊數(shù)據(jù)都無附件就跳出
if (!$data && !$_data) {
return NULL;
}
// 新舊數(shù)據(jù)都一樣時(shí)表示沒做改變就跳出
if ($data === $_data) {
return NULL;
}
// 當(dāng)無新數(shù)據(jù)且有舊數(shù)據(jù)表示刪除舊附件
if (!$data && $_data) {
return array(
array(),
$_data
);
}
// 當(dāng)無舊數(shù)據(jù)且有新數(shù)據(jù)表示增加新附件
if ($data && !$_data) {
return array(
$data,
array()
);
}
// 剩下的情況就是刪除舊文件增加新文件
// 新舊附件的交集,表示固定的
$intersect = @array_intersect($data, $_data);
return array(
@array_diff($data, $intersect), // 固有的與新文件中的差集表示新增的附件
@array_diff($_data, $intersect), // 固有的與舊文件中的差集表示待刪除的附件
);
}
/**
* 字段表單輸入
*
* @paramstring$cname字段別名
* @paramstring$name字段名稱
* @paramarray$cfg字段配置
* @paramarray$data值
* @return string
*/
public function input($cname, $name, $cfg, $value = NULL, $id = 0) {
// 字段顯示名稱
$text = (isset($cfg['validate']['required']) && $cfg['validate']['required'] == 1 ? '<font color="red">*</font>' : '').''.$cname.':';
// 顯示框?qū)挾仍O(shè)置
$width = isset($cfg['option']['width']) && $cfg['option']['width'] ? $cfg['option']['width'] : '80%';
// 表單附加參數(shù)
$attr = isset($cfg['validate']['formattr']) && $cfg['validate']['formattr'] ? $cfg['validate']['formattr'] : '';
// 字段提示信息
$tips = isset($cfg['validate']['tips']) && $cfg['validate']['tips'] ? '<span class="help-block" id="dr_'.$name.'_tips">'.$cfg['validate']['tips'].'</span>' : '';
// 禁止修改
$disabled = !IS_ADMIN && $id && $value && isset($cfg['validate']['isedit']) && $cfg['validate']['isedit'] ? 'disabled' : '';
// 當(dāng)字段必填時(shí),加入html5驗(yàn)證標(biāo)簽
if (isset($cfg['validate']['required'])
&& $cfg['validate']['required'] == 1) {
$attr.= ' required="required"';
}
// 上傳的URL
$url = '/index.php?s=member&c=api&m=ajax_upload&name='.$name.'&siteid='.SITE_ID.'&code='.str_replace('=', '', dr_authcode($cfg['option']['size'].'|'.$this->get_upload_path($cfg['option']['uploadpath']), 'ENCODE'));
// 字段默認(rèn)值
$file_value = '';
$value && $value = dr_string2array($value);
// 默認(rèn)值輸出
$info = array();
if ($value && is_array($value)) {
foreach ($value as $i => $id) {
$info[$i]['id'] = $id;
$info[$i]['file'] = dr_get_file($id).'!300';
}
}
$count = max(1, (int)$cfg['option']['count']);
// 輸出變量
$str ='';
$str.= '<script type="text/javascript" src="'.THEME_PATH.'js/ajax.upload.js"></script>';
$str.= '<script type="text/javascript" src="'.THEME_PATH.'js/jquery-ui.min.js"></script>';
$str.= '<div class="bk10"></div>';
$str.= ' <ul class="cover imgreset" id="dr_upload_'.$name.'">';
for($i=0; $i<$count; $i++) {
$str.= '<li class="upload-container" style="width:90px;height:72px;margin-bottom: 10px;">';
$str.= '<div class="upload-trigger '.($info[$i]['id'] ? 'completed" style="display:none' : '').'" id="dr_'.$name.'_upload_'.$i.'"></div>';
$str.= '<div class="upload-preview" style="display:'.($info[$i]['id'] ? 'block' : 'none').';">';
$str.= '<input type="hidden" class="dr_'.$name.'_upload_value_'.$i.'" name="data['.$name.']['.$i.']" id="cover" value="'.$info[$i]['id'].'" />';
$str.= '<div class="pic" style="width:90px; height:71px; overflow:hidden;background-image:none !important"><img src="'.($info[$i]['id'] ? $info[$i]['file'] : 'javascript:void(0);').'" style="height:auto;" /></div>';
$str.= '<a href="javascript:dr_remove_'.$name.'('.$i.')" class="remove" style="display: none;"></a>';
$str.= '<span class="rearrange-text" style="display: none;">拖動(dòng)排序</span>';
$str.= '</div>';
$str.= '<script type="text/javascript">
function dr_remove_'.$name.'(i) {
var cover = $("#dr_'.$name.'_upload_"+i);
cover.removeClass("completed");
cover.show();
cover.html("");
$(".dr_'.$name.'_upload_value_"+i).val("");
var preview = cover.next(\'div\');
$(\'img\', preview).attr({src:\'javascript:void(0);\'});
preview.hide();
}
$(".upload-container").bind({
mouseenter:function(){
$("a,span", $(this)).show();
},
mouseleave:function(){
$("a,span", $(this)).hide();
}
});
// 拖動(dòng)圖片
$("#dr_upload_'.$name.'").sortable({
revert: true
});
$(function () {
var $cover_'.$name.' = $("#dr_'.$name.'_upload_'.$i.'");
var $preview_'.$name.' = $cover_'.$name.'.next(\'div\');
var fileType = "pic",fileNum = "one";
var button = $("#dr_'.$name.'_upload_'.$i.'"), interval;
new AjaxUpload(button, {
action: "'.$url.'",
name: "Filedata",
onSubmit: function (file, ext) {
if(ext && /^(jpg|jpeg|png|gif|webp)$/i.test(ext)){
// 上傳成功
$cover_'.$name.'.html("<img src=\"'.THEME_PATH.'admin/images/loading-mini.gif\">");
}else{
dr_tips("請(qǐng)上傳圖片");
return false;
}
},
onComplete: function (file, response) {
var json = $.parseJSON(response);
if(json.code){
$("img", $preview_'.$name.').attr({src:json.url});
$("input", $preview_'.$name.').val(json.id);
$cover_'.$name.'.addClass("completed").hide();
$preview_'.$name.'.show();
$(\'div.upload-trigger:not(".completed")\').eq(0).html(\'\').show();
}else{
$(\'img\', $preview_'.$name.').attr({src:\'javascript:void(0);\'});
$(\'input\', $preview_'.$name.').val(\'\');
dr_tips(json.msg);
}
}
});
});
</script>';
$str.= '</li>';
}
$str.= '</ul>';
$str.= '<div class="bk10"></div>';
$str.= ''.$tips;
// 輸出最終表單顯示
return $this->input_format($name, $text, $str);
}
}官方提醒:使用module內(nèi)容循環(huán)標(biāo)簽的生成工具,填寫參數(shù)就可以生成相關(guān)的代碼,每個(gè)參數(shù)后面都有用法解釋
用DIY字段吧,這樣改影響升級(jí)
回復(fù)@可接二開、定制、使用解答
DIY字段小白不會(huì)用,流汗.gif