本文實作功能:
開發行動端關注頁面
開發行動裝置粉絲頁
#實現從自己空間看見的關注列表都顯示已關注
實現自己看其他人關注列表時 自己關注的用戶顯示已關注 自己未關注的用戶顯示關注
解決如何在PHP檔案裡邊顯示行動裝置頁面
在discuz中行動端是沒有粉絲,追蹤頁面的,那麼就需要我們來開發。以下就是開發流程。
discuz中pc端是一種有聆聽和聽眾的功能。如下圖home.php?mod=follow&do=follower這個位址就是對應的pc端的粉絲頁
source/module/home/home_follow.php # 的這個檔案。在這個文件裡,我們只需要注意到follower 和 following 這兩個名字。這兩個一個是關注的意思 一個是粉絲的意思
#然後根據discuz的訪問機制我們去模板裡找一下follow_follower.html這個檔案。但在模板裡邊我們發現使用follow開頭的檔案就這幾個
#繼續到檔案source/module/ home/home_follow.php然後拉到最後看載入的模板。這裡可以看到載入的模板就是上邊看到的follow_feed.html這個檔案。
那麼我們就來到template/default/home/follow_feed.htm這個檔案裡邊,大概是在554行左右可以看到很熟悉的兩個模組一個follower和following
既然已經猜想是在這裡了,那就寫一個測試程式碼測試一下。
經過測試我們就已經確信無誤了,這個頁面就是載入的追蹤頁面和粉絲頁面。
#在上面的測試會發現位址請求的是/home.php?mod=follow&do=follower,但載入html檔卻是template/default/home/follow_feed.htm。也就是說在dsicuz中如果需要載入跟請求位址不一致的文件,需要使用template函數來載入。
那麼下面咱們自己寫一個行動端follow_follower檔。
然後瀏覽器調整為手機存取模式即可
#以上就是二開關注頁面和粉絲頁面PHP如何載入
#在模板裡邊我們也可以這樣寫,判斷do為follower時進入粉絲模板,為關注時進入關注模板
下圖就是咔咔開發關注頁面的效果
那麼頁面寫完了我們就需要實作資料對接了。繼續回到template/default/home/follow_feed.htm這個檔案。可以看到使用的資料是list,循環使用的是fuser這個變數
打開discuz資料庫字典,可以看到是否關注使用的是mutual這個字段
根據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['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">已关注</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">关注</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['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">已关注</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">关注</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">已关注</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">关注</font> </a> <!--{/if}--> <!--{/if}--> </p>
現在用戶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行動端二開之關注與粉絲頁以及關注狀態處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!