第十一章:【UCHome二次开发】功能修改
2011-09-06 16:14
519 查看
有些功能的修改涉及到了流程或数据需求的变动,这时候简单的修改模板文件已经无法解决问题,而是需要修改对应的流程和数据处理代码来完成。一般处理程序文件位于/source文件夹下。具体的代码修改就是根据功能逻辑来调整php代码或是sql语句,这里就不展开了。下面举两个例子说明一下。
1、修改群组列表页面分页的每页显示条数
定位群组数据处理页面为/source/space_mtag.php,找到如下代码:
$perpage = 20
修改中间的数据为希望显示的条数即可。
2、修改群组列表页面单个群组提示
默认情况下,群组列表页面每个群组链接下方只提示有多少人参加了群组。如下图:
群组列表修改前界面
现在希望没有加入的群组显示 申请加入 链接,且显示已申请人数;已申请未通过的群组给出 已申请,等待审核 提示;已加入的群组按原来的提示,显示已加入的人数。
打印原来的数组数据,发现数据中没有申请中的人数和是否已加入群组的状态信息。于是便需要修改sql语句来获取想要的数据。在/source/space_mtag.php文件中,修改代码
$query =$_SGLOBAL['db']->query("SELECT * FROM ".$tablemtag." WHEREfieldid='$id' ORDER BY membernum DESC LIMIT $start,$perpage");
改为
$query =$_SGLOBAL['db']->query("SELECT mtag.*, x.applynum, y.grade FROM".tname('mtag')." mtag LEFT JOIN ( SELECT count( uid ) AS applynum,tagid FROM `".tname('tagspace')."` WHERE grade = '-2' GROUP BY tagid) AS x ON x.tagid = mtag.tagid LEFT JOIN ( SELECT
* FROM uch_tagspace WHERE uid= ".$_SGLOBAL['session']['uid']." )y ON y.tagid = mtag.tagid WHEREmtag.fieldid = '$id' ORDER BY y.grade DESC, membernum DESC LIMIT$start,$perpage");
通过以上修改,使SQL查询的返回结果增加了各个群组的申请中人数和当前用户在各个群组中的状态。
有了数据,再需要通过修改模板页面来改变显示内容。
找到群组分类的显示模板为space_mtag_field.htm,修改模板中群组列表的显示代码,如下:
修改为
修改完成后,效果如下:
群组列表修改后界面
3、增加某些分类的群组申请个数限制
由于项目需求,需要限定读书小组限报一个群组,启航计划限报两个群组,需要做群组加入流程的改动。
找到群组申请相关代码,位于/source/space_mtag.php,如下代码块:
需要插入一段代码来改变处理流程,具体为在加入群组前增加已申请群组个数的检验,修改后代码如下:
4、修改群组分类下的分类名称和显示分类个数
默认安装完后,群组分类中显示的是自由联盟、区域联盟、兴趣联盟,即使我们通过管理系统修改了群组分类的名称,页面上的群组分类页不改变。如下图所示:
默认情况下的群组分类
通过调试代码发现群组分类的显示内容是写到数据文件里的,对应为/data/data_profield.php文件,文件内容(默认情况)如下:
以上举了4个列子来说明对UCHome功能进行修改的思路。其他的小改动相信也类似,同理类推。
所有章节下载:http://download.csdn.net/source/3579636
文章摘自:http://wenku.baidu.com/view/ffd8a5c14028915f804dc2e0.html
1、修改群组列表页面分页的每页显示条数
定位群组数据处理页面为/source/space_mtag.php,找到如下代码:
$perpage = 20
修改中间的数据为希望显示的条数即可。
2、修改群组列表页面单个群组提示
默认情况下,群组列表页面每个群组链接下方只提示有多少人参加了群组。如下图:
群组列表修改前界面
现在希望没有加入的群组显示 申请加入 链接,且显示已申请人数;已申请未通过的群组给出 已申请,等待审核 提示;已加入的群组按原来的提示,显示已加入的人数。
打印原来的数组数据,发现数据中没有申请中的人数和是否已加入群组的状态信息。于是便需要修改sql语句来获取想要的数据。在/source/space_mtag.php文件中,修改代码
$query =$_SGLOBAL['db']->query("SELECT * FROM ".$tablemtag." WHEREfieldid='$id' ORDER BY membernum DESC LIMIT $start,$perpage");
改为
$query =$_SGLOBAL['db']->query("SELECT mtag.*, x.applynum, y.grade FROM".tname('mtag')." mtag LEFT JOIN ( SELECT count( uid ) AS applynum,tagid FROM `".tname('tagspace')."` WHERE grade = '-2' GROUP BY tagid) AS x ON x.tagid = mtag.tagid LEFT JOIN ( SELECT
* FROM uch_tagspace WHERE uid= ".$_SGLOBAL['session']['uid']." )y ON y.tagid = mtag.tagid WHEREmtag.fieldid = '$id' ORDER BY y.grade DESC, membernum DESC LIMIT$start,$perpage");
通过以上修改,使SQL查询的返回结果增加了各个群组的申请中人数和当前用户在各个群组中的状态。
有了数据,再需要通过修改模板页面来改变显示内容。
找到群组分类的显示模板为space_mtag_field.htm,修改模板中群组列表的显示代码,如下:
<divclass="box"> <!--{if $list}--> <ul class="thread_list"> <!--{loop $list $value}--> <li> <div class="threadimg60"><ahref="space.php?do=mtag&tagid=$value[tagid]"><imgsrc="$value[pic]"style="width:60px;"></a></div> <ahref="space.php?do=mtag&tagid=$value[tagid]">$value[tagname]</a><br/> 已有 <spanclass="num">$value[membernum]</span> 人加入 </li> <!--{/loop}--> </ul> <divclass="page">$multi</div> <!--{else}--> <p>还没有群组。</p> <!--{/if}--> </div>
修改为
<divclass="box"> <!--{if $list}--> <ul class="thread_list"> <!--{loop $list $value}--> <li> <divclass="threadimg60"><ahref="space.php?do=mtag&tagid=$value[tagid]"><imgsrc="$value[pic]"style="width:60px;"></a></div> <ahref="space.php?do=mtag&tagid=$value[tagid]">$value[tagname]</a> <!--{if in_array($value[fieldid],$_FD[conf][veri_fieldids])}--> <!--{if ($value[fieldid] ==4 || $value[fieldid] == 5) }--> <!--{ifisset($value[grade]) }--> <!--{if$value[grade] == -2}--> <br /><spanclass="num">已提交申请,正等待审核</span> <!--{else}--> <br />已有 <spanclass="num">$value[membernum]</span> 人加入 <!--{/if}--> <!--{else}--> <!--{if $value[applynum]}--> <br />已有 <spanclass="num">$value[applynum]</span> 人申请 <!--{else}--> <br />暂时无人申请 <!--{/if}--> <br /><ahref="cp.php?ac=apply&tagid=$value[tagid]">申请加入</a> <!--{/if}--> <!--{/if}--> <!--{else}--> <br />已有 <spanclass="num">$value[membernum]</span> 人加入 <!--{/if}--> </li> <!--{/loop}--> </ul> <divclass="page">$multi</div> <!--{else}--> <p>还没有群组。</p> <!--{/if}--> </div>
修改完成后,效果如下:
群组列表修改后界面
3、增加某些分类的群组申请个数限制
由于项目需求,需要限定读书小组限报一个群组,启航计划限报两个群组,需要做群组加入流程的改动。
找到群组申请相关代码,位于/source/space_mtag.php,如下代码块:
elseif($_GET['op'] =='join') { $tagid =empty($_GET['tagid'])?0:intval($_GET['tagid']); if(submitcheck('joinsubmit')) { $mtag = mtag_join('tagid', $tagid); if(empty($mtag)) { showmessage('mtag_join_error'); } else { showmessage('join_success',"space.php?uid=$_SGLOBAL[supe_uid]&do=mtag&tagid=$mtag[tagid]",0); } } }
需要插入一段代码来改变处理流程,具体为在加入群组前增加已申请群组个数的检验,修改后代码如下:
elseif($_GET['op'] =='join') { $tagid =empty($_GET['tagid'])?0:intval($_GET['tagid']); // 获取$fieldid $wheresql ="main.tagid='$tagid'"; $query =$_SGLOBAL['db']->query("SELECT * FROM ".tname('mtag')." mainWHERE $wheresql"); if($mtag =$_SGLOBAL['db']->fetch_array($query)) { $fieldid = $mtag['fieldid']; } // 限定读书小组(fieldid=4, num=1)与启航行动(fieldid=5,num=2)的人数 $t_tagspace = tname('tagspace'); $t_mtag = tname('mtag'); $count =$_SGLOBAL['db']->result($_SGLOBAL['db']->query("SELECT count(*) FROM$t_tagspace inner join $t_mtag on $t_tagspace.`tagid` = $t_mtag.`tagid` WHERE$t_tagspace.uid = ".$_SGLOBAL['session']['uid']." and$t_mtag.`fieldid` = $fieldid"),0); if ($fieldid == 4 && $count >=1){ showmessage('读书小组只能申请或参加 1 个'); } else if ($fieldid == 5 && $count>= 2){ showmessage('启航行动只能申请或参加 2 个'); } if(submitcheck('joinsubmit')) { $mtag = mtag_join('tagid', $tagid); if(empty($mtag)) { showmessage('mtag_join_error'); } else { showmessage('join_success',"space.php?uid=$_SGLOBAL[supe_uid]&do=mtag&tagid=$mtag[tagid]",0); } } }
4、修改群组分类下的分类名称和显示分类个数
默认安装完后,群组分类中显示的是自由联盟、区域联盟、兴趣联盟,即使我们通过管理系统修改了群组分类的名称,页面上的群组分类页不改变。如下图所示:
默认情况下的群组分类
通过调试代码发现群组分类的显示内容是写到数据文件里的,对应为/data/data_profield.php文件,文件内容(默认情况)如下:
<?php if(!defined('IN_UCHOME'))exit('Access Denied'); $_SGLOBAL['profield']=Array ( 1 => Array ( 'fieldid' => 1, 'title' => '自由联盟', 'formtype' => 'text', 'inputnum' => 100, 'mtagminnum' => 0, 'manualmoderator' => 0, 'manualmember' => 1 ), 2 => Array ( 'fieldid' => 2, 'title' => '地区联盟', 'formtype' => 'text', 'inputnum' => 100, 'mtagminnum' => 0, 'manualmoderator' => 0, 'manualmember' => 1 ), 3 => Array ( 'fieldid' => 3, 'title' => '兴趣联盟', 'formtype' => 'text', 'inputnum' => 100, 'mtagminnum' => 0, 'manualmoderator' => 0, 'manualmember' => 1 ) ) ?>
以上举了4个列子来说明对UCHome功能进行修改的思路。其他的小改动相信也类似,同理类推。
所有章节下载:http://download.csdn.net/source/3579636
文章摘自:http://wenku.baidu.com/view/ffd8a5c14028915f804dc2e0.html
相关文章推荐
- 虚拟币交易平台源码修改 二次开发 btchanges 增加充值3级奖励分红功能
- 【UCHome二次开发】模板修改
- 第十章:【UCHome二次开发】模板修改
- SBO二次开发中点击Matrix第一行的排序功能代码
- 【x5平台二次开发项目】OA_对人员概念的关系添加关系(字段)以及对相应的mainWindow的修改
- ecshop二次开发中购物车修改的常见问题
- 关于ShopEx的二次开发的目录结构及各文件功能
- phpcms二次开发_创建功能模块
- 如何设计一个软件的架构,使它可以提供二次开发的功能?
- wordpress二次开发教程手记:feed订阅功能的完善
- uchome 二次开发 AJAX解析
- 3D打印切片软件--cura的二次开发(2)(界面分析与汉化)(修改版增加图片)
- Ecshop二次开发:修改产品分类描述为Fckeditor(二)
- ecshop二次开发 购物时为每件商品添加备注信息的修改方法
- phpcms v9 【二次开发】 后台调用单张图片上传功能(详解)
- 开发日记——手机安全卫士 Day06 2016-7-25 修改部分界面,增加了联系人搜索功能,完成部分黑名单功能
- 发布cmcc.in 网址缩短,网址压缩程序的源代码,欢迎修改和二次开发
- 方维分享系统二次开发,订阅tag标签的功能
- 二次开发平台数据导入功能问题总结
- 别人二次开发ecmall的功能 仔细研究一下