php关注功能怎么开发,discuz如何开发关注功能

"本文详细介绍了如何在Discuz! 中实现用户关注和取消关注的功能。首先从home.php文件入手,通过分析space和spacecp模块,找到关注功能位于source/include/spacecp/spacecp_follow.php文件中。关注和取消关注的请求地址为home.php?mod=spacecp&ac=follow&op=(add/del)&hash={FORMHASH}
摘要由CSDN通过智能技术生成

本文实现功能:

1.关注和取消关注用户

2. 判断与用户之间的关注关系

实现效果

点击关注后显示已关注,取消关注后显示关注ta

b1073e4b9859492c53dd79fd136bdfac.png

7e4dc088f77c2b58c2c7bbb29f8b8411.png

实现方案

用户空间的入口是home.php文件,所以我们需要先从home.php这个文件入手

打开文件home.php文件的29行可以看到使用in_array进行了一次判断,主要注重space和spacecp这俩个模块

我们先认识俩个单词:space(空间) 和 spacecp(翻译过来是太空计划)

b18ad2c13dae1c88f06c7b9240e2bb3e.png

然后我们需要打开discuz原来的默认模板(这个是你自己在搭建一个discuz应用,没有任何改动的代码),然后发一个主题,随便点击一个用户图像,查看地址栏的地址信息。

发现进入的是space这个模块

f0b39d6b37c4cb3a52b773802f7883bf.png

那么根据地址栏我们可以找到source/include/space/space_profile.php这个文件。但是在这个文件里边,找不到任何有关于关注的代码。

但是这个文件里边包含了关于用户空间的所有需要的数据。比如用户粉丝量,用户主题数量、用户关注的数量、用户好友数量。这些值都保存在$space这个变量中,直接在模板里边使用接口。关于这些字段可以在数据库字典里边直接搜索关键字即可

于是我们在看一下spacecp这个模块,在这个目录下, 我们发现了follow这个文件。follow的英文翻译过来就有关注的含义。

在学习别人项目时,我们第一需要看文档,第二是需要自己根据目录结构和文件名来猜想其含义

6afa11a8a71069ca27c6d6286e833312.png

打开文件source/include/spacecp/spacecp_follow.php。在文件一开头就有俩个数值,一个add一个del。然后是使用的op这个变量接收的。根据这个op变量就可以知道添加关注是add 取消关注时del方法

93b933f118db1f47837e5e7d4679336e.png

我们在add里边发现一个值follow_not_follow_self这个我的理解是自己不能关注自己。可以在language里边进行搜索这个值去进行确认。在这里就已经证明了source/include/spacecp/spacecp_follow.php就是实现关注的文件

c832a3d3bcb552faca97af2fc9597855.png

接下来就是怎么进行请求呢!

根据下面箭头指向的四个$_GET值 我们能确定的请求地址为home.php?mod=spacecp&ac=follow&op=add&hash={FORMHASH}&fuid={$space[uid]}&mobile=2

至于为什么能确定请求地址,后文在介绍,本文重点是关注功能

76a2b327383f847ef4e75442e32b5424.png

然后我们在模板里边写上以下代码,就是关注ta的那个样式

d385f705a30e3d33e3a99aba66fd331f.png

点击关注,这个时候我们关注就已经做好了。那么取消关注也是同理了哈!

d2948ab8d4beb653352c4937e0efc543.png

接下来我们根据关键字follow在数据库字典里边搜索,发现会有一个用户关注关系表

67a387d1b631f651e2664d3c66b36a03.png

打开数据库查到pre_home_follow这个表,就会发现有一条数据就是关注者跟被关注者。

458d662e2bafa09d3570253058acf88d.png在上文中我们实现了关注与取消关注,但是当我们关注了用户后,是不是需要显示已关注 或者 关注ta的字样

处理是否显示关注

我们打开数据库字典搜索pre_common_member_count 用户统计表。

在这个表里边我们发现有收听数量和听众数量。那么对应的就是关注数量和粉丝数量

8b802e4ba9e994279039ff4ce24aceb7.png

然后打开文件source/include/space/space_profile.php加上代码# 判断是否关注

$follow_data = DB::fetch_all("select * from pre_home_follow where uid = '$_G[uid]' and followuid = '$space[uid]' limit 1");

if(!empty($follow_data)){

$space['is_follow'] = $follow_data[0]['mutual'];

}

在template/default/touch/home/space_profile.htm模板里边进行判断

测试

没有关注时显示关注ta

53385d04a14bb8337ed8b915c872ae87.png

关注之后显示以关注

2932295e631dd0c0865c893ef8857703.png

总结

关于本文的实现关注功能。在网上的资料不是很多,但是我们也可以自己去研究实现。后期会一直推送discuz的文章。有任何问题,评论区见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值