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

<?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

 

 

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值