DESTOONcms自定义上传图片

 DestoonCMS   高蒙   阅读(1489)   评论(0)   2015-11-30 21:35:00    destoon destoon图片上传 


公司之前的项目打包给别人了,所以组织又给我一个新的系统,接手destoon系统,程序刚写完,现在让我去维护。

之前做这个项目的时候 ,我来改过前台的模板,当时,改的我晕乎乎。文件层级深,来回引用,幸好有强大的编辑器帮忙,不然真的浪费很多时间。废话不多说了,来看看,怎么给destoon加上自定义的图片上传吧。
 
案例:  我这里是以商家修改资料为例,填写资料时,必须上传企业资质图片。
             我这里的前台样式是修改过的,功能没怎么动,可以借鉴。
 
前台效果图:

 
准备:首先你要找到,你要修改的表,destoon_company 添加一个字段 thumb1
 
第一部分:前台的功能实现与显示。
 
第一步、【前台文件】 edit.html 在你需要添加图片的位置,加上下面的代码:
 
<!-- 2015/11/27 添加上传证书 begin 高蒙-->
<tbody id="Tabs5" style="display: none;">
<tr>
<td class="tl">上传证书副本:</td>
<td colspan="tr"><input type="hidden" name="post[thumb1]" id="thumb1" value="{$thumb1}"/></td>
</tr>
<tr>
<td class="tl"></td>
<td class="tr"><img src="{if $thumb1}{$thumb1}{else}{DT_SKIN}image/waitpic.gif{/if}" width="100" height="100" id="showthumb1" title="预览图片" alt="" 
onclick="if(this.src.indexOf('waitpic.gif') == -1) {_preview(Dd('showthumb1').src, 1);}else{Dalbum(1,{$moduleid},600,450, Dd('thumb1').value, true);}"/></td>
</tr>
<tr>
<td class="tl"></td>
<td class="tr"><img src="{DT_STATIC}{$MODULE[2][moduledir]}/image/img_upload.gif" width="12" height="12" title="上传" 
onclick="Dalbum(1,{$moduleid},600,450, Dd('thumb1').value, true);"/>&nbsp;&nbsp;
<img src="{DT_STATIC}{$MODULE[2][moduledir]}/image/img_select.gif" width="12" height="12" title="选择" onclick="selAlbum(1);"/>&nbsp;&nbsp;
<img src="{DT_STATIC}{$MODULE[2][moduledir]}/image/img_delete.gif" width="12" height="12" title="删除" onclick="delAlbum(1,'wait');"/></td>
</tr>
</tbody>
<!-- 2015 11 27 添加上传证书 end-->
 
第二步、edit.inc.php 这是会员资料修改的处理文件 其中注意的代码是第50行左右如下:
 
文件路径 /module/member/edit.inc.php


if($do->edit($post)) {
 
其中的 edit() 方法就是控制表单的上传和修改的,通过追踪代码,我们发现它继承的是member.class.php,那
我们就来看看这个类。
 
 
第三步、member.class.php的类文件。
 
一、通过找代码,我们找到380行的 edit()方法。在此方法里面,set_member()是控制用户修改资料的。由于我
们是新加的功能 所以,我们尽量的不修改它的代码,避免意想不到的错误,所以我们就复制其中的方法,改成自己的名字set_member_g()。
 
文件路径 /module/member/member.class.php
 
function edit($member){
if(!$this->is_member($member)) return false;
$member = $this->set_member_g($member);  // 将原来的set_member() 修改为 set_member_g()


// 新加的方法 2015/11/30 boom

function set_member_g($member) {
global $MOD;
$member['email'] = trim($member['email']);
$member['mail'] = isset($member['mail']) ? trim($member['mail']) : '';
is_email($member['mail']) or $member['mail'] = '';
$member['msn'] = isset($member['msn']) ? trim($member['msn']) : '';
is_email($member['msn']) or $member['msn'] = '';
$member['qq'] = isset($member['qq']) ? trim($member['qq']) : '';
is_numeric($member['qq']) or $member['qq'] = '';
$member['ali'] = isset($member['ali']) ? trim($member['ali']) : '';
if(!$this->is_clean($member['ali'])) $member['ali'] = '';
$member['skype'] = isset($member['skype']) ? trim($member['skype']) : '';
if(!$this->is_clean($member['skype'])) $member['skype'] = '';
$member['address'] = isset($member['address']) ? trim($member['address']) : '';
if(!$this->is_clean($member['address'])) $member['address'] = '';
$member['postcode'] = isset($member['postcode']) ? trim($member['postcode']) : '';
is_numeric($member['postcode']) or $member['postcode'] = '';
$member['mode'] = (isset($member['mode']) && is_array($member['mode']) && $member['mode']) 
? implode(',', $member['mode']) : '';
$member['keyword'] = $member['company'];
$member['homepage'] = isset($member['homepage']) ? fix_link($member['homepage']) : '';
$member['capital'] = isset($member['capital']) ? dround($member['capital']) : '';
$member['sound'] = intval($member['sound']);
if($this->userid) {$member['keyword'] = $member['company'].strip_tags(area_pos($member['areaid'], 
',')).','.$member['business'].','.$member['sell'].','.$member['buy'].','.$member['mode'];
clear_upload_g($member['thumb'].$member['introduce'], $this->userid);
$new = $member['introduce'];
if($member['thumb']) $new .= '<img src="'.$member['thumb'].'">';
$content_table = content_table(4, $this->userid, is_file(DT_CACHE.'/4.part'),$this->table_company_data);
$r = $this->db->get_one("SELECT content FROM {$content_table} WHERE userid=$this->userid");
$old = $r['content'];
$r = $this->get_one();
if($r['thumb']) $old .= '<img src="'.$r['thumb'].'">';
delete_diff($new, $old);
} else {
if($member['thumb']) clear_upload($member['thumb'].$member['introduce']);
}
$member['content'] = $member['introduce'];
$member['introduce'] = addslashes(get_intro($member['content'], $MOD['introduce_length']));
if(!defined('DT_ADMIN')) {
$content = $member['content'];
unset($member['content']);
$member = dhtmlspecialchars($member);
$member['content'] = dsafe($content);
}
if($MOD['introduce_clear'] || $MOD['introduce_save']) {
$member['content'] = stripslashes($member['content']);
$member['content'] = save_local($member['content']);
if($MOD['introduce_clear']) $member['content'] = clear_link($member['content']);
if($MOD['introduce_save']) $member['content'] = save_remote($member['content']);
$member['content'] = addslashes($member['content']);
}
if($member['catid']) {
$catids = explode(',', substr($member['catid'], 1, -1));
$cids = '';
foreach($catids as $catid) {
$C = get_cat($catid);
if($C) {
$catid = $C['parentid'] ? $C['arrparentid'].','.$catid : $catid;
$cids .= $catid.',';
}
}
$cids = array_unique(explode(',', substr(str_replace(',0,', ',', ','.$cids), 1, -1)));
$member['catids'] = ','.implode(',', $cids).',';
}
return $member;
}
//end
 
二、在上面的方法中,我们又引用到了clear_upload()的方法,所以,同样的道理,找到这个函数并且复制此函数,改为自己的名字clear_upload_g。
 
路径:/include/post.func.php


function clear_upload_g($content = '', $itemid = 0) {
global $DT, $db, $session, $_userid;
if(!is_object($session)) $session = new dsession();
if(!isset($_SESSION['uploads']) || !$_SESSION['uploads'] || !$content) return;
$update = array();
foreach($_SESSION['uploads'] as $file) {
if(strpos($content, $file) === false) {
//delete_upload($file, $_userid);  注释掉此行代码
} else {
if($DT['uploadlog'] && $itemid) $update[] = "'".md5($file)."'";
}
}
if($update) $db->query("UPDATE {$db->pre}upload_".($_userid%10)." SET itemid=$itemid WHERE item IN (".implode(',', $update).")");
$_SESSION['uploads'] = array();
}
 
第二部分:后台管理的管理与查看
 
后台实现的效果:
 

 
一、找到修改会员资料的文件,添加上我们添加的企业资质的图片。
 
文件地址:/module/member/admin/template/member_edit.tpl.php
添加的代码:
 
<tr>
<td class="tl">上传证书副本:</td> 
<td colspan="tr">
<?php if($thumb1 != ""){ ?> 
<input type="hidden" name="member[thumb1]" id="thumb1" value="<?php echo $thumb1;?>"/>
<img src="<?php echo $thumb1;?>" width="100" height="100" id="showthumb1" title="预览图片"
alt="" onclick="if(this.src.indexOf('waitpic.gif') == -1){_preview(Dd('showthumb1').src, 1);}
else{Dalbum(1,2,600,450, Dd('thumb1').value, true);}"/></td>
<?php }else{ ?>
该用户没有上传企业资质!
<?php }?>
</tr>
 
到此,按照上面的几个步骤,轻松的就实现了destoon自定义上传图片,想哪里上传图片,就在哪里上传图。
 
 
 
 



相关文章



我要评论


站长昵称:(*)

输入内容:


评论列表


高蒙

男,程序猿一枚

 

人生要是没有理想, 那跟一条咸鱼有什么分别。


关于我

  http://www.shuchengxian.com

高蒙个人博客是以PHP技术为主的程序员个人博客。博客主要发布php开发中遇到的问题以及解决办法,同时个人博客也分享网站模板素材,jquery插件等方面素材。


站点声明:相关侵权、举报、投诉及建议等,请发E-mail:936594075#qq.com(#替换成@)。

Copyright © 2018, www.shuchengxian.com, All rights reserved. 个人博客皖公网安备 34152302000022号 皖ICP备15015490号

关键词:个人博客,PHP博客,PHP博客程序,高蒙博客,高蒙个人博客,php程序员博客,程序员个人博客