首頁 >CMS教程 >Discuz >discuz如何開發關注功能

discuz如何開發關注功能

咔咔
咔咔原創
2020-05-07 12:08:523996瀏覽

本文實現功能:

        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這個我的理解是自己不能關注自己。可以在language裡邊進行搜尋這個值去進行確認。這裡就已經證明了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的那個樣式

          

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模板里边进行判断

测试

没有关注时显示关注ta

discuz如何開發關注功能

关注之后显示以关注

discuz如何開發關注功能

总结

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

以上是discuz如何開發關注功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn