第十一章:【UCHome二次开发】功能修改

有些功能的修改涉及到了流程或数据需求的变动,这时候简单的修改模板文件已经无法解决问题,而是需要修改对应的流程和数据处理代码来完成。一般处理程序文件位于/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,修改模板中群组列表的显示代码,如下:

<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文件,文件内容(默认情况)如下:

<?phpif(!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

 

 

 

转载于:https://www.cnblogs.com/liuensong/archive/2011/09/06/10140442.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296602.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为鸿蒙OS 2.0正式发布!明年华为手机将全面支持!

全世界只有3.14 % 的人关注了爆炸吧知识9 月 10 日&#xff0c;在华为开发者大会 2020 上&#xff0c;华为消费者业务 CEO 余承东宣布推出鸿蒙 OS 2.0 版本&#xff08;HarmonyOS 2.0&#xff09;。鸿蒙 OS 的代码也在今天下午HDC 2020 大会结束后的 18:18 正式开放。鸿蒙 OS 开…

微软认真聆听了开源 .NET 开发社区的炮轰: 通过CLI 支持 Hot Reload 功能

微软近日激怒了开源.NET社区&#xff0c;起因是它删除了开源.NET的一项旗舰功能&#xff0c;以提升Visual Studio 的吸引力&#xff0c;尤其是针对与Visual Studio颇有渊源的跨平台源代码编辑器Visual Studio Code。好消息是微软听取了社区的声音&#xff0c;恢复了通过CLI支持…

烽火服务器查询服务器型号,烽火服务器应该起的进程

烽火服务器应该起的进程 内容精选换一换IDE Daemon模块提供接口给Matrix和Framework调用&#xff0c;Matrix通过这些接口可以实现将DVPP预处理结果数据发送到IDE-daemon-hiai进程所在的服务器&#xff0c;IDE-daemon-hiai将结果数据写到文件中&#xff1b;Framework通过调用这些…

(译)元素浮动的那些事儿

原文&#xff1a;http://bitsofco.de/2015/how-floating-works/&#xff0c;作者 Ire Aderinokun 发表于 2015 年 8 月 11 日。 尽管我们现在用浮动布局已经很少了&#xff0c;但是在一些特殊的需求下&#xff0c;它仍然是唯一可行的解决方案。在这些少见的需求中&#xff0c;浮…

无法定位程序输入点dxgiget_美国ABB TZIDC 智能定位器调试方法

一、ABBTZID-C 智能定位器安装及操作气路连接使用与定位器气源端口处标识的标准接口连接气源连接定位器的输出与气动执行器的气缸电气连接根据下列接线端子图以及设计要求进行相应的配线(一般只需11&#xff0c;-12&#xff0c;31&#xff0c;-32)11-12控制信号输入端子(DC4---…

这个黑科技小音箱,不用连蓝牙、一触即播

▲ 点击查看以前用蓝牙音箱&#xff0c;都要打开蓝牙找半天&#xff0c;有时还找不到对应的音箱。找到了&#xff0c;连接又很 …… 漫长 ……一句「请等待蓝牙配对」重复好几遍还没连上&#xff0c;整个人都不好了。而今天介绍的这个开物灵犀感应音箱&#xff0c;不用连蓝牙&a…

Win11运行安卓超详细教程!芜湖起飞!

一、前提Windows 11 版本号为 Build 22000.xxx 或更高版本。您的电脑硬件 BIOS/UEFI 支持虚拟化功能。二、支持本教程适用于 Windows 11 正式版和预览版&#xff0c;包括 Dev 频道、Beta 频道和 Release Preview 频道。本教程适用于搭载 Intel 和 AMD 等处理器的 Windows 11 电…

精品教程--Android实战系列源码与教程

下载源码 知识技能概要&#xff1a; 1. 此套为零基础源码与教程 2. 包括了Android应用开发所有技术 3. 配套2011QQ效果实现项目源码 4. 堪称最详细中文源码注释 ...... 详细介绍: 1. 零基础源码与教程 本套源码与教程&#xff0c;由我们具有丰富开发经验的高级程师针对需要学习…

mdx 聚合函数

聚合函数Aggregation(set_express, numeric_express), Aggregation&#xff08;http://msdn.microsoft.com/zh-cn/library/ms145524.aspx&#xff09;执行求和函数, 如果和某些其他求和函数配合的话, 会有变化. 看一个例子 SELECT { ([Measures].[Reseller Sales Amount]), ([M…

被小学数学题套路到哭!这些“逆天”题目,谁做谁知道…

全世界只有3.14 % 的人关注了爆炸吧知识看着孩子的作业题&#xff0c;有多少爸爸妈妈感叹着&#xff0c;幸亏自己毕业早&#xff0c;要不然小学都不能毕业&#xff01;这不&#xff0c;最近一道简单的小学数学题&#xff0c;又刷爆了家长们的朋友圈。一起往下看。算一算图中的这…

ASP.NET性能优化之构建自定义文件缓存

ASP.NET的输出缓存&#xff08;即静态HTML&#xff09;在.NET4.0前一直是基于内存的。这意味着如果我们的站点含有大量的缓存&#xff0c;则很容易消耗掉本机内存。现在&#xff0c;借助于.NET4.0中的OutputCacheProvider&#xff0c;我们可以有多种选择创建自己的缓存。如&…

《Redis核心技术与实战》学习总结(1)

【Redis】| 总结/Edison Zhou0写在开头作为Key/Value键值数据库&#xff0c;Redis的应用非常广泛。在之前多年的工作生涯中&#xff0c;我也只是关注了零散的技术点&#xff0c;没有对Redis建立起一套整体观&#xff0c;但只有建立了系统整体观&#xff0c;才能更好地定位问题和…

饿了么翻车,美团被质疑,马云也赔了40亿,这项技术为什么让人害怕?

全世界只有3.14 % 的人关注了爆炸吧知识人类还没用力AI可能就倒下了8日&#xff0c;一篇《外卖骑手&#xff0c;困在系统里》的文章刷爆了朋友圈。看过的人多半都不好受&#xff0c;除了作为社畜感叹生活不易外&#xff0c;就是感叹外卖系统的AI算法对人类的裹挟是那么的残酷。…

如何强制 .NET 程序以 管理员模式 运行 ?

咨询区 Gold&#xff1a;我有一个 winform 程序部署客户的PC机上&#xff0c;请问我如何通过编码的形式强制让程序以管理员模式运行&#xff1f;回答区 Gaspa79&#xff1a;如果你用的是 Visual Studio 2019&#xff0c;可以通过工具去配置&#xff0c;右键 项目 -> 新建项 …

bitmap 转byte[]后读取_闲谈redis的bitmap

bitmap的原理bitmap就是通过最小的单位bit(8bit 1b 0.001kb)来进行0或者1的设置&#xff0c;表示某个元素对应的值或者状态。一个bit的值&#xff0c;或者是0&#xff0c;或者是1&#xff1b;也就是说一个bit能存储的最多信息是2。优点基于最小的单位bit进行存储&#xff0c;…

序1--年轻正当时(特权)

序1 年轻正当时 这本所谓的书&#xff0c;恐怕不一定能够带还没入门的U杀进FPGA开发的大门&#xff0c;当然也肯定不能达到进阶的目的。但是&#xff0c;姑且应了Bingo老弟所谓的对“图像的直觉”&#xff0c;确实图文并茂的从某一个山寨面把FPGA开发赤裸裸的展现给了大家。 被…

Windows 11 dapr 环境安装

安装其实很简单按照dapr官网操作步骤其实没什么大问题的,不过在没有好的网络访问github的情况下真是有点揪心啦&#xff01;推荐使用 工具 fastgithub 访问githubFast&#xff1a;Github让Github畅通无阻windows 11 下的安装方式1.安装dapr cli 直接到Releases dapr/cli GitH…

日本原装进口雪平锅,煎炸炒煮全搞定,日本人用了 1000 年

▲ 点击查看小爆我虽然热爱烹饪&#xff0c;但不得不说「下厨房」&#xff0c;也是个坑。光是锅&#xff0c;我就要买好几个。为了蒸包子馒头买蒸锅&#xff0c;为了炒菜买炒锅&#xff0c;偶尔想精致喝热牛奶又买了小奶锅&#xff0c;为了煲汤、做点卤味解解馋&#xff0c;买炖…

Android开发学习笔记:浅谈Content Provider

一.Content Provider的概念介绍 Content Providers是所有应用程序之间数据存储和检索的桥梁&#xff0c;它使得各个应用程序之间实现数据共享。是应用程序间共享数据的唯一途径。Content Provider 主要的功能就是存储并检索数据以及向其他应用程序提供访问数据的接口。其中包括…

VS2010插件之NuGet

Visual Studio&#xff08;简写VS&#xff09;是.net程序员开发必不可少的开发工具&#xff0c;随着VS的版本不断的升级和使用用户的扩大&#xff0c;现在针对VS开发了许多的开源免费的插件&#xff0c;大大的方便了程序员的开发&#xff0c;提高了开发效率。今天&#xff0c;我…