溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Discuz如何實(shí)現(xiàn)移動(dòng)端二開(kāi)之關(guān)注和粉絲頁(yè)面以及關(guān)注狀態(tài)處理

發(fā)布時(shí)間:2020-08-07 11:03:09 來(lái)源:億速云 閱讀:222 作者:Leah 欄目:建站服務(wù)器

這篇文章將為大家詳細(xì)講解有關(guān)Discuz如何實(shí)現(xiàn)移動(dòng)端二開(kāi)之關(guān)注和粉絲頁(yè)面以及關(guān)注狀態(tài)處理,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

本文實(shí)現(xiàn)功能:

  1. 開(kāi)發(fā)移動(dòng)端關(guān)注頁(yè)面

  2. 開(kāi)發(fā)移動(dòng)端粉絲頁(yè)面

  3. 實(shí)現(xiàn)從自己空間看見(jiàn)的關(guān)注列表都顯示已關(guān)注

  4. 實(shí)現(xiàn)自己看其他人關(guān)注列表時(shí)  自己關(guān)注的用戶顯示已關(guān)注  自己未關(guān)注的用戶顯示關(guān)注

  5. 解決如何在PHP文件里邊顯示移動(dòng)端頁(yè)面

前期準(zhǔn)備:解決PHP文件里邊顯示移動(dòng)端頁(yè)面

在discuz中移動(dòng)端是沒(méi)有粉絲,關(guān)注頁(yè)面的,那么就需要我們來(lái)開(kāi)發(fā)。以下就是開(kāi)發(fā)流程。

discuz中pc端是有收聽(tīng)和聽(tīng)眾的功能。如下圖home.php?mod=follow&do=follower這個(gè)地址就是對(duì)應(yīng)的pc端的粉絲頁(yè)面

Discuz如何實(shí)現(xiàn)移動(dòng)端二開(kāi)之關(guān)注和粉絲頁(yè)面以及關(guān)注狀態(tài)處理

然后我們可以追溯PHP文件source/module/home/home_follow.php 的這個(gè)文件。在這個(gè)文件里,我們只需要注意到follower 和 following 這倆個(gè)名字。這倆個(gè)一個(gè)是關(guān)注的意思  一個(gè)是粉絲的意思

Discuz如何實(shí)現(xiàn)移動(dòng)端二開(kāi)之關(guān)注和粉絲頁(yè)面以及關(guān)注狀態(tài)處理

然后根據(jù)discuz的訪問(wèn)機(jī)制我們?nèi)ツ0謇镎乙幌耭ollow_follower.html這個(gè)文件。但是在模板里邊我們發(fā)現(xiàn)使用follow開(kāi)頭的文件就這幾個(gè)

Discuz如何實(shí)現(xiàn)移動(dòng)端二開(kāi)之關(guān)注和粉絲頁(yè)面以及關(guān)注狀態(tài)處理

繼續(xù)來(lái)到文件source/module/home/home_follow.php然后拉到最后看加載的模板。這里可以看到加載的模板就是上邊看到的follow_feed.html這個(gè)文件。

Discuz如何實(shí)現(xiàn)移動(dòng)端二開(kāi)之關(guān)注和粉絲頁(yè)面以及關(guān)注狀態(tài)處理那么我們就來(lái)到template/default/home/follow_feed.htm這個(gè)文件里邊,大概是在554行左右可以看到很熟悉的倆個(gè)模塊一個(gè)follower和following

Discuz如何實(shí)現(xiàn)移動(dòng)端二開(kāi)之關(guān)注和粉絲頁(yè)面以及關(guān)注狀態(tài)處理

既然已經(jīng)猜想是在這里了,那就寫一個(gè)測(cè)試代碼測(cè)試一下。

經(jīng)過(guò)測(cè)試我們就已經(jīng)確信無(wú)誤了,這個(gè)頁(yè)面就是加載的關(guān)注頁(yè)面和粉絲頁(yè)面。

Discuz如何實(shí)現(xiàn)移動(dòng)端二開(kāi)之關(guān)注和粉絲頁(yè)面以及關(guān)注狀態(tài)處理

Discuz如何實(shí)現(xiàn)移動(dòng)端二開(kāi)之關(guān)注和粉絲頁(yè)面以及關(guān)注狀態(tài)處理

在上面的測(cè)試會(huì)發(fā)現(xiàn)地址請(qǐng)求的是/home.php?mod=follow&do=follower,但是加載html文件卻是template/default/home/follow_feed.htm。也就是說(shuō)在dsicuz中如果需要加載跟請(qǐng)求地址不一致的文件,需要使用template函數(shù)來(lái)加載。

那么下面咱們自己寫一個(gè)移動(dòng)端follow_follower文件。

Discuz如何實(shí)現(xiàn)移動(dòng)端二開(kāi)之關(guān)注和粉絲頁(yè)面以及關(guān)注狀態(tài)處理

Discuz如何實(shí)現(xiàn)移動(dòng)端二開(kāi)之關(guān)注和粉絲頁(yè)面以及關(guān)注狀態(tài)處理然后瀏覽器調(diào)整為手機(jī)訪問(wèn)模式即可

Discuz如何實(shí)現(xiàn)移動(dòng)端二開(kāi)之關(guān)注和粉絲頁(yè)面以及關(guān)注狀態(tài)處理

以上就是二開(kāi)關(guān)注頁(yè)面和粉絲頁(yè)面PHP如何加載

開(kāi)發(fā)粉絲頁(yè)面和關(guān)注頁(yè)面并實(shí)現(xiàn)數(shù)據(jù)接入

在模板里邊我們也可以這樣寫,判斷do為follower時(shí)進(jìn)入粉絲模板,為關(guān)注時(shí)進(jìn)入關(guān)注模板Discuz如何實(shí)現(xiàn)移動(dòng)端二開(kāi)之關(guān)注和粉絲頁(yè)面以及關(guān)注狀態(tài)處理

下圖就是咔咔開(kāi)發(fā)關(guān)注頁(yè)面的效果

Discuz如何實(shí)現(xiàn)移動(dòng)端二開(kāi)之關(guān)注和粉絲頁(yè)面以及關(guān)注狀態(tài)處理

那么頁(yè)面寫完了我們就需要實(shí)現(xiàn)數(shù)據(jù)對(duì)接了。繼續(xù)回到template/default/home/follow_feed.htm這個(gè)文件??梢钥吹绞褂玫臄?shù)據(jù)是list,循環(huán)使用的是fuser這個(gè)變量

Discuz如何實(shí)現(xiàn)移動(dòng)端二開(kāi)之關(guān)注和粉絲頁(yè)面以及關(guān)注狀態(tài)處理

實(shí)現(xiàn)關(guān)注顯示與不顯示

打開(kāi)discuz數(shù)據(jù)庫(kù)字典,可以看到是否關(guān)注使用的是mutual這個(gè)字段Discuz如何實(shí)現(xiàn)移動(dòng)端二開(kāi)之關(guān)注和粉絲頁(yè)面以及關(guān)注狀態(tài)處理

根據(jù)mutual這個(gè)字段來(lái)控制關(guān)注與已關(guān)注的顯示與不顯示

  • 當(dāng)自己進(jìn)入自己空間時(shí)在關(guān)注列表里邊是全部顯示已關(guān)注  判斷條件是 當(dāng)$_G[uid] == $_GET[uid]時(shí)mutual>=0即可

  • 當(dāng)自己進(jìn)入別人空間查看關(guān)注列表時(shí) 如果是自己關(guān)注的用戶需要顯示已關(guān)注  否則顯示關(guān)注即可   這里的判斷條件是  $_G[uid] != $_GET[uid]時(shí)mutual==-1或者mutual==1即可。這里為什么會(huì)有一個(gè)mutual=-1的標(biāo)識(shí)。數(shù)據(jù)庫(kù)字典是沒(méi)有這個(gè)標(biāo)識(shí)的,但是實(shí)際測(cè)試出來(lái)的是有的,咔咔也看了源碼是做了一個(gè)判斷,先知道這么判斷就行

  • 在關(guān)注列表里邊所有的鏈接地址都為home.php?mod=spacecp&ac=follow&op=del&hash={FORMHASH}&fuid=$fuser['followuid']&mobile=2。所有的用戶標(biāo)識(shí)都是followuid即可

  • 粉絲列表就很簡(jiǎn)單,直接使用-1和1判斷即可

  • 也就是說(shuō)mutual這個(gè)字段的值為0 和1是只能判斷自己在自己空間查看關(guān)注和粉絲列表時(shí)可以使用。如果是自己進(jìn)入其他用戶的粉絲和關(guān)注列表就會(huì)產(chǎn)生一個(gè)mutual的值為-1的一個(gè)字段

  • 那也就是當(dāng)自己進(jìn)入其他用戶有自己已經(jīng)關(guān)注的用戶時(shí)mutual的值就是-1

實(shí)現(xiàn)代碼

// 粉絲模板
<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">已關(guān)注</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">關(guān)注</font>
   </a>
   <!--{/if}-->
</p>

// 關(guān)注列表模板
<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">已關(guān)注</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">關(guān)注</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">已關(guān)注</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">關(guān)注</font>
      </a>
      <!--{/if}-->
   <!--{/if}-->

</p>

畫圖解釋用戶關(guān)注的邏輯處理

Discuz如何實(shí)現(xiàn)移動(dòng)端二開(kāi)之關(guān)注和粉絲頁(yè)面以及關(guān)注狀態(tài)處理

  • 現(xiàn)在用戶A,用戶B,用戶C

  • 用戶A關(guān)注了用戶C

  • 然后用戶B進(jìn)入到用戶A空間的關(guān)注列表是可以看到用戶C的

  • 假如這個(gè)時(shí)候用戶B已經(jīng)關(guān)注了用戶C,那么這個(gè)時(shí)候關(guān)注的按鈕就是已關(guān)注,這個(gè)時(shí)候mutual的值就是-1(這種情況就是自己到別人的關(guān)注列表查看用戶,如果有自己已經(jīng)關(guān)注過(guò)的就會(huì)顯示已關(guān)注,并且mutual的值為-1)

  • 這個(gè)時(shí)候用戶B在回到自己的用戶空間查看關(guān)注列表就會(huì)顯示用戶C在自己的列表,但是這個(gè)時(shí)候mutual的值為0.  但是當(dāng)用戶C也關(guān)注了用戶B時(shí)mutual的值就是1

  • 所以說(shuō)用戶當(dāng)用戶B在自己空間的關(guān)注列表查看使用mutual的值為0和1判斷。當(dāng)用戶B去查看用戶A的關(guān)注列表時(shí)使用mutual為-1和1來(lái)判斷

畫圖解釋粉絲的邏輯處理

Discuz如何實(shí)現(xiàn)移動(dòng)端二開(kāi)之關(guān)注和粉絲頁(yè)面以及關(guān)注狀態(tài)處理

  • 現(xiàn)用用戶A,用戶B,用戶C

  • 當(dāng)用戶A關(guān)注了用戶C時(shí),用戶C的粉絲列表就是有用戶A

  • 這個(gè)時(shí)候用戶B訪問(wèn)用戶C的粉絲列表就只有用戶A, 這個(gè)時(shí)候用戶A的關(guān)注狀態(tài)也是  未關(guān)注狀態(tài),并且mutual的是0

  • 假如用戶A也關(guān)注了用戶B,用戶B在用戶C的粉絲列表里查看用戶A的狀態(tài)也是未關(guān)注狀態(tài)  并且mutual的值為0

  • 但是當(dāng)用戶B關(guān)注了用戶A后,這個(gè)時(shí)候用戶B在用戶C的粉絲列表查看用戶A的狀態(tài)就是已關(guān)注并且mutual的值為1表示互相關(guān)注

  • 但是當(dāng)用戶A沒(méi)有關(guān)注用戶B

  • 這個(gè)時(shí)候用戶用戶B在用戶C的粉絲列表里邊看到用戶A的狀態(tài)是未關(guān)注,當(dāng)B把用戶A關(guān)注后狀態(tài)為已關(guān)注,mutual的值為-1

  • 所以粉絲列表里邊判斷只有當(dāng)mutual的值為-1或者1時(shí)是關(guān)注狀態(tài),其余都是未關(guān)注狀態(tài)

關(guān)于Discuz如何實(shí)現(xiàn)移動(dòng)端二開(kāi)之關(guān)注和粉絲頁(yè)面以及關(guān)注狀態(tài)處理就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI