目錄
前期準備:解決PHP檔案裡邊顯示行動裝置頁面
實作關注顯示與不顯示
" >實作關注顯示與不顯示
實作程式碼
#畫圖解釋粉絲的邏輯處理
首頁 CMS教程 Discuz Discuz行動端二開之關注與粉絲頁以及關注狀態處理

Discuz行動端二開之關注與粉絲頁以及關注狀態處理

May 11, 2020 am 01:23 AM
discuz

本文實作功能:

  1. 開發行動端關注頁面

  2. 開發行動裝置粉絲頁

  3. #實現從自己空間看見的關注列表都顯示已關注

  4. 實現自己看其他人關注列表時  自己關注的用戶顯示已關注  自己未關注的用戶顯示關注

  5. 解決如何在PHP檔案裡邊顯示行動裝置頁面


前期準備:解決PHP檔案裡邊顯示行動裝置頁面

在discuz中行動端是沒有粉絲,追蹤頁面的,那麼就需要我們來開發。以下就是開發流程。

discuz中pc端是一種有聆聽和聽眾的功能。如下圖home.php?mod=follow&do=follower這個位址就是對應的pc端的粉絲頁

Discuz行動端二開之關注與粉絲頁以及關注狀態處理


##然後我們可以追溯PHP文件

source/module/home/home_follow.php # 的這個檔案。在這個文件裡,我們只需要注意到follower 和 following 這兩個名字。這兩個一個是關注的意思  一個是粉絲的意思

Discuz行動端二開之關注與粉絲頁以及關注狀態處理

#然後根據discuz的訪問機制我們去模板裡找一下follow_follower.html這個檔案。但在模板裡邊我們發現使用follow開頭的檔案就這幾個

Discuz行動端二開之關注與粉絲頁以及關注狀態處理

#繼續到檔案source/module/ home/home_follow.php然後拉到最後看載入的模板。這裡可以看到載入的模板就是上邊看到的follow_feed.html這個檔案。

那麼我們就來到template/default/home/follow_feed.htm這個檔案裡邊,大概是在554行左右可以看到很熟悉的兩個模組一個follower和followingDiscuz行動端二開之關注與粉絲頁以及關注狀態處理

Discuz行動端二開之關注與粉絲頁以及關注狀態處理

既然已經猜想是在這裡了,那就寫一個測試程式碼測試一下。

經過測試我們就已經確信無誤了,這個頁面就是載入的追蹤頁面和粉絲頁面。

Discuz行動端二開之關注與粉絲頁以及關注狀態處理

Discuz行動端二開之關注與粉絲頁以及關注狀態處理

#在上面的測試會發現位址請求的是/home.php?mod=follow&do=follower,但載入html檔卻是template/default/home/follow_feed.htm。也就是說在dsicuz中如果需要載入跟請求位址不一致的文件,需要使用template函數來載入。


那麼下面咱們自己寫一個行動端follow_follower檔。

Discuz行動端二開之關注與粉絲頁以及關注狀態處理

然後瀏覽器調整為手機存取模式即可Discuz行動端二開之關注與粉絲頁以及關注狀態處理

Discuz行動端二開之關注與粉絲頁以及關注狀態處理


#以上就是二開關注頁面和粉絲頁面PHP如何載入

#開發粉絲頁面和追蹤頁面並實現資料存取

#在模板裡邊我們也可以這樣寫,判斷do為follower時進入粉絲模板,為關注時進入關注模板Discuz行動端二開之關注與粉絲頁以及關注狀態處理

下圖就是咔咔開發關注頁面的效果

Discuz行動端二開之關注與粉絲頁以及關注狀態處理

那麼頁面寫完了我們就需要實作資料對接了。繼續回到template/default/home/follow_feed.htm這個檔案。可以看到使用的資料是list,循環使用的是fuser這個變數

Discuz行動端二開之關注與粉絲頁以及關注狀態處理

實作關注顯示與不顯示

打開discuz資料庫字典,可以看到是否關注使用的是mutual這個字段Discuz行動端二開之關注與粉絲頁以及關注狀態處理

根據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[&#39;uid&#39;]}" href="home.php?mod=spacecp&ac=follow&op=del&hash={FORMHASH}&fuid=$fuser[&#39;uid&#39;]&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[&#39;uid&#39;]}" href="home.php?mod=spacecp&ac=follow&op=add&hash={FORMHASH}&fuid=$fuser[&#39;uid&#39;]&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[&#39;followuid&#39;]}" href="home.php?mod=spacecp&ac=follow&op=del&hash={FORMHASH}&fuid=$fuser[&#39;followuid&#39;]&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[&#39;followuid&#39;]}" href="home.php?mod=spacecp&ac=follow&op=add&hash={FORMHASH}&fuid=$fuser[&#39;followuid&#39;]&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[&#39;followuid&#39;]}" href="home.php?mod=spacecp&ac=follow&op=del&hash={FORMHASH}&fuid=$fuser[&#39;followuid&#39;]&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[&#39;followuid&#39;]}" href="home.php?mod=spacecp&ac=follow&op=add&hash={FORMHASH}&fuid=$fuser[&#39;followuid&#39;]&mobile=2" class="flw_btn_fo dialog">
         <i class="iconfont icon-like"></i>
         <font class="grey">关注</font>
      </a>
      <!--{/if}-->
   <!--{/if}-->

</p>
登入後複製

畫圖解釋使用者關注的邏輯處理

Discuz行動端二開之關注與粉絲頁以及關注狀態處理

  • 現在用戶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來判斷

#畫圖解釋粉絲的邏輯處理

Discuz行動端二開之關注與粉絲頁以及關注狀態處理

  • ##現用用戶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時是關注狀態,其餘都是未關注狀態

總結


以上就是實現的所有過程,在下一篇文章會針對這塊的程式碼進行分析


#

以上是Discuz行動端二開之關注與粉絲頁以及關注狀態處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Discuz後台登入問題解決方法大揭秘 Discuz後台登入問題解決方法大揭秘 Mar 03, 2024 am 08:57 AM

Discuz後台登入問題解決方法大揭秘,需要具體程式碼範例隨著網路的快速發展,網站建置變得越來越普遍,而Discuz作為一款常用的論壇建站系統,受到了許多站長的青睞。然而,正是因為其功能強大,有時候我們在使用Discuz的過程中會遇到一些問題,例如後台登入問題。今天,我們就來大揭秘Discuz後台登入問題的解決方法,並且提供具體的程式碼範例,希望能幫助到有需要

Discuz註冊流程詳解:讓您輕鬆修改個人訊息 Discuz註冊流程詳解:讓您輕鬆修改個人訊息 Mar 13, 2024 pm 12:21 PM

《Discuz註冊流程詳解:讓您輕鬆修改個人信息,需要具體代碼示例》Discuz是一款功能強大的社區論壇程序,被廣泛應用於各類網站,在用戶註冊和個人信息修改方面,提供了豐富的功能和介面。本文將為您詳細介紹Discuz的註冊流程,並提供具體的程式碼範例,幫助您輕鬆自訂和修改個人資訊。一、使用者註冊流程在Discuz中,使用者註冊是網站的重要功能之一,註冊流程的順暢與

什麼是Discuz? Discuz的定義與功能介紹 什麼是Discuz? Discuz的定義與功能介紹 Mar 03, 2024 am 10:33 AM

《探索Discuz:定義、功能及程式碼範例》隨著網路的快速發展,社群論壇已成為人們獲取資訊、交流觀點的重要平台。在眾多的社群論壇系統中,Discuz作為國內較知名的一種開源論壇軟體,備受廣大網站開發者和管理員的青睞。那麼,什麼是Discuz?它又有哪些功能,能為我們的網站提供怎樣的幫助呢?本文將對Discuz進行詳細介紹,並附上具體的程式碼範例,幫助讀者更

Discuz用戶必備!改名道俱全面解析! Discuz用戶必備!改名道俱全面解析! Mar 12, 2024 pm 10:15 PM

Discuz用戶必備!改名道俱全面解析!在Discuz論壇中,改名功能一直備受用戶關注與需求。對於一些需要改名的使用者來說,透過改名道具可以輕鬆實現使用者名稱的修改,而且這也是一種有趣的互動方式。以下就讓我們深入探討Discuz中的改名道具,包括如何取得、如何使用、一些常見問題的解決方法。 1.取得改名道具在Discuz中,改名道具通常是透過點數購買或管理員

遇到 Discuz 密碼錯誤怎麼辦?快速解決方案分享! 遇到 Discuz 密碼錯誤怎麼辦?快速解決方案分享! Mar 03, 2024 am 09:33 AM

遇到Discuz密碼錯誤怎麼辦?快速解決方案分享! Discuz!是一款非常受歡迎的論壇程序,它為用戶提供了一個方便交流的平台。在使用Discuz!論壇時,有時會遇到密碼錯誤的情況,這可能會導致使用者無法正常登入和使用論壇。那麼,遇到Discuz!密碼錯誤時,我們該如何快速解決這個問題?以下將分享一些解決方案,並提供具體的程式碼範例供參考。一、檢查密碼是否

解決Discuz微信分享無法顯示的問題 解決Discuz微信分享無法顯示的問題 Mar 09, 2024 pm 03:39 PM

標題:解決Discuz微信分享無法顯示的問題,需要具體程式碼範例隨著行動網路的發展,微信成為了人們日常生活中不可或缺的一部分。在網站開發中,為了提升使用者體驗和擴大網站的曝光度,許多網站會整合微信分享功能,讓使用者能夠輕鬆分享網站的內容到朋友圈或微信群組。然而,有時在使用Discuz等開源論壇系統時,會遇到微信分享無法顯示的問題,這給使用者體驗帶來了一定的困

Discuz編輯器:強大的網頁編輯工具 Discuz編輯器:強大的網頁編輯工具 Mar 09, 2024 pm 06:06 PM

Discuz編輯器:強大的網頁編輯工具,需要具體程式碼範例隨著網路的發展,網站建立和內容編輯變得越來越重要。作為常見的網頁編輯工具,Discuz編輯器在網站建置中扮演著重要的角色。它不僅提供了豐富的功能和工具,還能夠幫助使用者更方便地編輯和發佈內容。在本文中,我們將介紹Discuz編輯器的特點和使用方法,並提供一些具體的程式碼範例,來幫助讀者更好地了解和使用

Discuz後台帳號登入異常,如何處理? Discuz後台帳號登入異常,如何處理? Mar 09, 2024 pm 05:51 PM

標題:Discuz後台帳號登入異常,如何處理?當你使用Discuz論壇系統的後台管理時,有時候可能會遇到帳號登入異常的情況。這可能是由於多種原因導致的,可能是密碼錯誤、帳號被封鎖、網路連線問題等。在遇到這種情況時,我們需要透過簡單的排查和處理來解決這個問題。檢查帳號和密碼是否正確:首先,確認你輸入的帳號和密碼是否正確。登入時,請確保大小寫輸入正確,密碼是否

See all articles