Dsicuz移动端二开之关注和粉丝页面以及关注状态处理

本文实现功能:

  1. 开发移动端关注页面

  2. 开发移动端粉丝页面

  3. 实现从自己空间看见的关注列表都显示已关注

  4. 实现自己看其他人关注列表时  自己关注的用户显示已关注  自己未关注的用户显示关注

  5. 解决如何在PHP文件里边显示移动端页面

前期准备:解决PHP文件里边显示移动端页面

在discuz中移动端是没有粉丝,关注页面的,那么就需要我们来开发。以下就是开发流程。

discuz中pc端是有收听和听众的功能。如下图home.php?mod=follow&do=follower这个地址就是对应的pc端的粉丝页面

image.png

然后我们可以追溯PHP文件source/module/home/home_follow.php  的这个文件。在这个文件里,我们只需要注意到follower 和 following 这俩个名字。这俩个一个是关注的意思  一个是粉丝的意思

image.png

然后根据discuz的访问机制我们去模板里找一下follow_follower.html这个文件。但是在模板里边我们发现使用follow开头的文件就这几个

image.png

继续来到文件source/module/home/home_follow.php然后拉到最后看加载的模板。这里可以看到加载的模板就是上边看到的follow_feed.html这个文件。

image.png那么我们就来到template/default/home/follow_feed.htm这个文件里边,大概是在554行左右可以看到很熟悉的俩个模块一个follower和following

image.png

既然已经猜想是在这里了,那就写一个测试代码测试一下。

经过测试我们就已经确信无误了,这个页面就是加载的关注页面和粉丝页面。

image.png

image.png

在上面的测试会发现地址请求的是/home.php?mod=follow&do=follower,但是加载html文件却是template/default/home/follow_feed.htm。也就是说在dsicuz中如果需要加载跟请求地址不一致的文件,需要使用template函数来加载。

那么下面咱们自己写一个移动端follow_follower文件。

image.png

image.png然后浏览器调整为手机访问模式即可

image.png

以上就是二开关注页面和粉丝页面PHP如何加载

开发粉丝页面和关注页面并实现数据接入

在模板里边我们也可以这样写,判断do为follower时进入粉丝模板,为关注时进入关注模板

image.png

下图就是咔咔开发关注页面的效果

image.png

那么页面写完了我们就需要实现数据对接了。继续回到template/default/home/follow_feed.htm这个文件。可以看到使用的数据是list,循环使用的是fuser这个变量

image.png

实现关注显示与不显示

打开discuz数据库字典,可以看到是否关注使用的是mutual这个字段

image.png

根据mutual这个字段来控制关注与已关注的显示与不显示

  • 当自己进入自己空间时在关注列表里边是全部显示已关注  判断条件是 当$_G[uid] == $_GET[uid]时mutual>=0即可

  • 当自己进入别人空间查看关注列表时 如果是自己关注的用户需要显示已关注  否则显示关注即可   这里的判断条件是  $_G[uid] != $_GET[uid]时mutual==-1或者mutual==1即可。这里为什么会有一个mutual=-1的标识。数据库字典是没有这个标识的,但是实际测试出来的是有的,咔咔也看了源码是做了一个判断,先知道这么判断就行

  • 在关注列表里边所有的链接地址都为home.php?mod=spacecp&ac=follow&op=del&hash={FORMHASH}&fuid=$fuser['followuid']&mobile=2。所有的用户标识都是followuid即可

  • 粉丝列表就很简单,直接使用-1和1判断即可

  • 也就是说mutual这个字段的值为0 和1是只能判断自己在自己空间查看关注和粉丝列表时可以使用。如果是自己进入其他用户的粉丝和关注列表就会产生一个mutual的值为-1的一个字段

  • 那也就是当自己进入其他用户有自己已经关注的用户时mutual的值就是-1

实现代码

// 粉丝模板
<p class="follow_manage">
   <!--{if $fuser[mutual] == -1 || $fuser[mutual] == 1}-->
   <a id="a_followmod_{$fuser['uid']}" href="home.php?mod=spacecp&ac=follow&op=del&hash={FORMHASH}&fuid=$fuser['uid']&mobile=2" class="flw_btn_fo dialog">
      <i class="iconfont  icon-like_fill rq"></i>
      <font class="grey">已关注</font>
   </a>
   <!--{else}-->
   <a id="a_followmod_{$fuser['uid']}" href="home.php?mod=spacecp&ac=follow&op=add&hash={FORMHASH}&fuid=$fuser['uid']&mobile=2" class="flw_btn_fo dialog">
      <i class="iconfont icon-like"></i>
      <font class="grey">关注</font>
   </a>
   <!--{/if}-->
</p>

// 关注列表模板
<p class="follow_manage">
   <!--{if $_G[uid] != $_GET[uid]}-->
      <!--{if $fuser[mutual] == -1 || $fuser[mutual] == 1}-->
      <a id="a_followmod_{$fuser['followuid']}" href="home.php?mod=spacecp&ac=follow&op=del&hash={FORMHASH}&fuid=$fuser['followuid']&mobile=2" class="flw_btn_fo dialog">
         <i class="iconfont  icon-like_fill rq"></i>
         <font class="grey">已关注</font>
      </a>
      <!--{else}-->
      <a id="a_followmod_{$fuser['followuid']}" href="home.php?mod=spacecp&ac=follow&op=add&hash={FORMHASH}&fuid=$fuser['followuid']&mobile=2" class="flw_btn_fo dialog">
         <i class="iconfont icon-like"></i>
         <font class="grey">关注</font>
      </a>
      <!--{/if}-->
   <!--{else}-->
      <!--{if $fuser[mutual] == 0 || $fuser[mutual] == 1}-->
      <a id="a_followmod_{$fuser['followuid']}" href="home.php?mod=spacecp&ac=follow&op=del&hash={FORMHASH}&fuid=$fuser['followuid']&mobile=2" class="flw_btn_fo dialog">
         <i class="iconfont  icon-like_fill rq"></i>
         <font class="grey">已关注</font>
      </a>
      <!--{else}-->
      <a id="a_followmod_{$fuser['followuid']}" href="home.php?mod=spacecp&ac=follow&op=add&hash={FORMHASH}&fuid=$fuser['followuid']&mobile=2" class="flw_btn_fo dialog">
         <i class="iconfont icon-like"></i>
         <font class="grey">关注</font>
      </a>
      <!--{/if}-->
   <!--{/if}-->

</p>

画图解释用户关注的逻辑处理

image.png

  • 现在用户A,用户B,用户C

  • 用户A关注了用户C

  • 然后用户B进入到用户A空间的关注列表是可以看到用户C的

  • 假如这个时候用户B已经关注了用户C,那么这个时候关注的按钮就是已关注,这个时候mutual的值就是-1(这种情况就是自己到别人的关注列表查看用户,如果有自己已经关注过的就会显示已关注,并且mutual的值为-1)

  • 这个时候用户B在回到自己的用户空间查看关注列表就会显示用户C在自己的列表,但是这个时候mutual的值为0.  但是当用户C也关注了用户B时mutual的值就是1

  • 所以说用户当用户B在自己空间的关注列表查看使用mutual的值为0和1判断。当用户B去查看用户A的关注列表时使用mutual为-1和1来判断

画图解释粉丝的逻辑处理

image.png

  • 现用用户A,用户B,用户C

  • 当用户A关注了用户C时,用户C的粉丝列表就是有用户A

  • 这个时候用户B访问用户C的粉丝列表就只有用户A, 这个时候用户A的关注状态也是  未关注状态,并且mutual的是0

  • 假如用户A也关注了用户B,用户B在用户C的粉丝列表里查看用户A的状态也是未关注状态  并且mutual的值为0

  • 但是当用户B关注了用户A后,这个时候用户B在用户C的粉丝列表查看用户A的状态就是已关注并且mutual的值为1表示互相关注

  • 但是当用户A没有关注用户B

  • 这个时候用户用户B在用户C的粉丝列表里边看到用户A的状态是未关注,当B把用户A关注后状态为已关注,mutual的值为-1

  • 所以粉丝列表里边判断只有当mutual的值为-1或者1时是关注状态,其余都是未关注状态

总结

以上就是实现的所有过程,在下一篇文章会针对这块的代码进行分析

原文地址:https://blog.csdn.net/fangkang7

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


**本资源可免费获取,请至尾部读阅!**Discuz素材资源交易论坛整站源码,带数据整站源码打包。包含了导航、企业官网、企业建站、企业SEO等静态页面。论坛采用Discuz3.4,包含PC、手机主题。带30多款插件。站长亲测可以使用,不过还是需要稍微调整一下的,部分链接还是原站的绝对地址,不过这
分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.netDiscuz!是腾讯(Tencent)旗下Comsenz公司推出的以社区为基础的专业建站平台,帮助网站实现一站式服务。让论坛(BBS)、个人空间(SNS)、门户(Portal)
最近工作需要IIS,自己的电脑又是Windows7系统,找了下安装的方法,已经安装成功。一、首先是安装IIS。打开控制面板,找到“程序与功能”,点进去二、点击左侧“打开或关闭Windows功能”三、找到“Internet信息服务”,按照下图打勾即可等待安装完成四、安装完成后,再回到控制面板
首先就是discuz,用起来真的是特别的好用,搭建的网站真的非常美观尤其是用起来之后,我发现功能真的是太强大了,不用到处编写代码,调试什么只需要把精力放在做产品上就可以了,我很好奇为什么会这么强大php的开源产品,比如wordpress也很强大,为什么discuz会如此的让我感到,是一种生态社区,而
1.找到图片路径拼装文件首先打开根目录下的template目录找到首页文件打开后找到图片列表的拼装位置//链接示例:<!--{eval$imagelistkey=getforumimg($pic[aid],0,300,500);}--><imgsrc="$imagelistkey"alt="$thread[subject]"/>然后修改为(客户要求改成缩略图)/
打开NavicatforMySQL找到数据表 pre_ucenter_members 把密码修改为123456789password:047099adb883dc19616dae0ef2adc5b6salt:311254改完就可以登录了:域名/admin.php记得上线后修改密码哦,嘿嘿嘿,鸡你太美!!!---------------------作者:Liu_Cabbage来源:CSDN原文:https://blog.
Discuz论坛基础搭建 第一步:下载XAMPP(Apache+Mysql+PHP+RERL)         下载的xampp-linux-x64-5.5.30-7-installer.run         上传到/home目录下,然后在命令行输入./xampp-linux-x64-5.5.30-7-installer.run,如果报权限问题,      
Discuz!是腾讯旗下Comsenz公司推出的以社区为基础的专业建站平台,帮助网站实现一站式服务。让论坛(BBS)、个人空间(SNS)、门户(Portal)、群组(Group)、应用开放平台(OpenPlatform)充分融合于一体,帮助网站实现一站式服务。Discuz!X3在继承和完善Discuz!X2.5的基础上,针对“系统架构”、
  Discuz迁移是一件较为麻烦的事情网上大多的迁移教程都是利用备份功能进行操作的,其实这种操作并不能保证迁移后完全正常工作本文将介绍直接转移数据库和文件的迁移方法 导出数据库迁移的首要部分就是导出数据库不论你是VPS、独立服务器还是虚拟主机一般都有phpmya
Discuz!论坛目前最新版本为3.4版本,已经好久没有更新了,我们SINE安全在对其网站安全检测的同时发现一处漏洞,该漏洞可导致论坛的后台文件可以任意的删除,导致网站瘫痪,后台无法登陆。关于该网站漏洞的细节我们来详细的分析看一下:Discuz漏洞的检测与分析该漏洞发生的位置在于source目录
  Discuz!X3.4升级后,帖子内容使用Unicode编码会出现直接显示源码问题打开:source\function\function_core.php  $string=str_replace(array('&','"','<','>'),array('&','"','<',&
安装discuz直接把安装包拷贝到根目录下然后在浏览器中输入http://localhost/myweb/install/index.php打开安装向导界面,需要修改一下myweb的权限安全属性uploading-image-555335.png把权限打开,然后一直下一步输入数据库的名称和密码adminroot******这步不成功可以看下
原文链接:http://www.cnblogs.com/bwzhangtao/p/4233362.html1<?php2/**3*抽奖4*@paramint$total5*/6functiongetReward($total=1000)7{8$win1=floor((0.12*$total)/100);9$win2=floor((3*$total)/100)
title:Linux搭建Discuz论坛WelcometoFofade'sBlog!这里是Linux搭建论坛的一些命令记录命令摘记:下载文件:Discuz安装环境:PHPApache2Mariadb(类MySQL)PHP-XML测试环境:浏览器查看tomcat页面是否正常,并简易编写一个PHP页面测试数据库操作:创建用户$createuser'name
原文链接:http://www.cnblogs.com/showblog/p/3358038.html取论坛指定版块帖子或回复(first=1就是帖子的1楼,如果=0就是调用回复,fid=62是论坛版块号):SELECT*FROMdiscuzx.pre_forum_postwherefirst=1andfid=62orderbytiddesc 取
LAMP平台概述目前最为成熟的一种企业网站应用模式,可提供动态Web站点应用及开发环境构成组件Linux、Apache、MySQL、PHP/Perl/PythonLAMP的优势成本低廉可定制、易于开发方便易用,安全和稳定一,在Windows上将LAMP所需压缩软件包共享出来(此处如有问题请看之前的博客相关文章)
代码functionlang($file,$langvar=null,$vars=array(),$default=null){echo$file.':'; global$_G; $fileinput=$file; list($path,$file)=explode('/',$file); if(!$file){echo('1-'); $file=$path; $path=
1、首先我们需要登录DZ论坛后台,在全局设置里边,关闭站点,防止网站出现新数据导致备份数据不完整。如图:2、找到站长板块,点击数据库,进行备份。3、按照提示,选择备份类型,点击提交开始进行备份。4、备份完成之后我们可以看到如下图。5、接下来我们需要把整个网站进行压缩打包。6、
实验目录:一、LAMP架构概念二、LAMP结构的安装与配置2-1手工编译安装http服务2-2手工编译安装mysql数据库2-3手工编译安装PHP工具三、安装Discuz论坛(开源论坛)四、小福利一、LAMP架构概念LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写:
  pre_common_admincp_cmenu后台菜单收藏表字段名数据类型默认值允许非空自动递增备注idsmallint(6)unsigned  NO是 titlevarchar(255)  NO  菜单名称urlvarchar(255)  NO  菜单地址sorttinyint(1) 0 NO  菜单类型,备用