discuz如何開發關注功能

本文實現功能:????????1.關注和取消關注用戶????????2. 判斷與用戶之間的關注關系

實現效果

點擊關注后顯示已關注,取消關注后顯示關注ta

discuz如何開發關注功能

discuz如何開發關注功能

實現方案

用戶空間的入口是home.php文件,所以我們需要先從home.php這個文件入手

打開文件home.php文件的29行可以看到使用in_array進行了一次判斷,主要注重space和spacecp這倆個模塊

我們先認識倆個單詞:space(空間) 和 spacecp(翻譯過來是太空計劃)?

discuz如何開發關注功能

然后我們需要打開discuz原來的默認模板(這個是你自己在搭建一個discuz應用,沒有任何改動的代碼),然后發一個主題,隨便點擊一個用戶圖像,查看地址欄的地址信息。

發現進入的是space這個模塊

discuz如何開發關注功能

那么根據地址欄我們可以找到source/include/space/space_profile.php這個文件。但是在這個文件里邊,找不到任何有關于關注的代碼。

但是這個文件里邊包含了關于用戶空間的所有需要的數據。比如用戶粉絲量,用戶主題數量、用戶關注的數量、用戶好友數量。這些值都保存在$space這個變量中,直接在模板里邊使用接口。關于這些字段可以在數據庫字典里邊直接搜索關鍵字即可

于是我們在看一下spacecp這個模塊,在這個目錄下, 我們發現了follow這個文件。follow的英文翻譯過來就有關注的含義。

在學習別人項目時,我們第一需要看文檔,第二是需要自己根據目錄結構和文件名來猜想其含義

discuz如何開發關注功能

打開文件source/include/spacecp/spacecp_follow.php。在文件一開頭就有倆個數值,一個add一個del。然后是使用的op這個變量接收的。根據這個op變量就可以知道添加關注是add? 取消關注時del方法

discuz如何開發關注功能

我們在add里邊發現一個值follow_not_follow_self這個我的理解是自己不能關注自己??梢栽趌anguage里邊進行搜索這個值去進行確認。在這里就已經證明了source/include/spacecp/spacecp_follow.php就是實現關注的文件

discuz如何開發關注功能

接下來就是怎么進行請求呢!

根據下面箭頭指向的四個$_GET值? 我們能確定的請求地址為

home.php?mod=spacecp&ac=follow&op=add&hash={FORMHASH}&fuid={$space[uid]}&mobile=2

至于為什么能確定請求地址,后文在介紹,本文重點是關注功能

discuz如何開發關注功能

然后我們在模板里邊寫上以下代碼,就是關注ta的那個樣式

??????????<a>關注ta ?????????</a>

discuz如何開發關注功能

點擊關注,這個時候我們關注就已經做好了。那么取消關注也是同理了哈!

discuz如何開發關注功能

接下來我們根據關鍵字follow在數據庫字典里邊搜索,發現會有一個用戶關注關系表

discuz如何開發關注功能

打開數據庫查到pre_home_follow?這個表,就會發現有一條數據就是關注者跟被關注者。

discuz如何開發關注功能

在上文中我們實現了關注與取消關注,但是當我們關注了用戶后,是不是需要顯示已關注? 或者 關注ta的字樣

處理是否顯示關注

我們打開數據庫字典搜索pre_common_member_count 用戶統計表。

在這個表里邊我們發現有收聽數量和聽眾數量。那么對應的就是關注數量和粉絲數量

discuz如何開發關注功能

然后打開文件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模板里邊進行判斷

<div> ?????????<!--{if isset($space[is_follow]) && $space[is_follow] == 0}--> ?????????<a>已關注 ?????????</a> ?????????<!--{else}--> ?????????<a>關注ta ?????????</a> ?????????<!--{/if}--> ??????</div>

測試

沒有關注時顯示關注ta

discuz如何開發關注功能

關注之后顯示以關注

discuz如何開發關注功能

總結

關于本文的實現關注功能。在網上的資料不是很多,但是我們也可以自己去研究實現。后期會一直推送discuz的文章。有任何問題,評論區見。

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享