站在程式設計的角度來說並不難,但也沒那麼容易,因為這是 php 類型的討論區程式,這類討論區,你們所見到的文章是由後端資料庫拉出來的,以首頁的熱門文章、最新文章、車界新聞、車界賽事來說,這四大類通常是事先由後端寫好的 php 程式從 MySQL 裡面查詢出來的,然後再由前端技術做成四個區塊,其實它們是一開始就全部存在的。
除非這四個區塊是使用獨立的非同步在拉,比方一開始只有熱門文章,然後當滑鼠移動或點至最新文章的時候,非同步啟動才去拉最新文章,這是另一種作法,通常是為了極端節省網路資源才會這樣做,不過我看小老婆並沒有這樣就是了,所以簡單的說,一開始所看到的,已經是事先就拉好的了。
那麼,關於阻擋封鎖者的文章,就必須由前端技術或後端技術兩個層面來發展了,各有優缺點啦。
先來研究前端的方法好了,這是比較適合小老婆的修改方向,可以在不需要大整後端程式的情形來設計,首先每個user都有一個獨立的 ID,然後比方你想封鎖 ID 為 11112222 這個人的發文,並且也設定儲存好了...
1.新的討論串
每個討論串在首頁的文章區額外增加一個標註發文者 ID 的 tag,比方 role-PosterId = "11112222",然後前端程式會檢查是否有 match ID 為 11112222 的標籤,如果有,就彙整個 block 掉,但這樣會有個問題,前面說過,一開始的文章是已經由後端查詢好的,好比目前小老婆每個區塊各有有17則文章(我見到的數目),倘若裡面有三則是由你封鎖者所 po 的文,那麼這樣就會只剩下14則,看起來就會怪怪der~
要怎麼補足剩下的三個呢?簡單的方式就是另外寫一支程式(但這方法以程式設計角度來說真有夠醜),會檢查文章的數量,倘若不足17則,就會啟動它,然後會根據所缺的數量去查詢,好比剛剛缺了3個,就會去多撈三個出來,並且排除 ID = 11112222 的,那這樣就不會讓你發現,喔喔喔,有被封鎖的人發文了耶~
2.討論串的回文者
原理相同,每個回文區皆增加一個標註發文者 ID 的 tag,比方 role-ReposterId = "11112222",那麼,當後端程式查詢好每頁的內容並 echo 至頁面時,前端程式會檢查有沒有 role-ReposterId = "11112222" ,如果有,就會把這個 ID 的區塊整個 remove 或 hide 或打灰掉,這部份可以由 user 自己在個人設定裡決定要移除、隱藏或打灰,因為 user 若偶爾想用 TXT888 或 TT哥之類的的大作搖搖樂時也能看得到嘛。
以上是我一時間想到的,若由前端程式介入的修改可能性。倘若要使用後端技術,那工程就會比較大,要考慮的層面也就更多了,不過萬變不離其宗,發想的方案大概就是比方首頁區的文章查詢,增加一個 user 的封鎖條件,然後查詢的時候把這個條件加進去,這樣查詢出來的列表就肯定不會有被封鎖者的文章了。
而討論串的回覆也是一樣,加入這個過濾條件,不過後端方案比較吃伺服器資源就是了,因為若 user 沒登入的時候,採用的是查詢方案 A,而 user 登入時,採用的是查詢方案 B,100個 user 登入時,伺服器則必須面對100個user的個人設定來決定查詢的資料,嗯,以小老婆的流量來說,恐怕比較吃重,而且後端的方法一旦資料查詢後,就無法再變動,比較缺乏彈性,但好處是前端也沒法用什麼鬼東西去駭出來就是了,所以前後端技術,各有好處。
好久沒寫網站程式了,一時間想到的大概就是這樣吧,啊,超級離題了!!!!