首頁  >  文章  >  CMS教程  >  Discuz行動端二開之關注與粉絲頁以及關注狀態處理

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

咔咔
咔咔原創
2020-05-11 01:23:143014瀏覽

本文實作功能:

  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