Die in diesem Artikel implementierten Funktionen:
1. Benutzern folgen und entfolgen
2. Folgende Beziehung zum Benutzer festlegen
Nachdem Sie auf „Folgen“ geklickt haben, wird es wie folgt angezeigt, und nach dem Entfolgen wird es wie folgt angezeigt
Der Eingang zum Benutzerbereich ist die Datei home.php, daher müssen wir zuerst mit der Datei home.php beginnen
Öffnen Sie die Datei home.php. In Zeile 29 können Sie sehen, dass in_array zur Beurteilung verwendet wurde, wobei der Schwerpunkt auf den beiden Modulen space und spacecp lag
Lassen Sie uns zunächst zwei Wörter erkennen: space (Leerzeichen) und Spacecp (übersetzt als Space-Programm)
Dann müssen wir die ursprüngliche Standardvorlage von Discuz öffnen (dies ist der Fall, wenn Sie selbst eine Discuz-Anwendung ohne Änderungen erstellen). Code), posten Sie dann ein Thema und klicken Sie auf ein Benutzerbild. Sehen Sie sich die Adressinformationen in der Adressleiste an.
Ich habe festgestellt, dass ich das Space-Modul aufgerufen habe
Dann finden wir in der Adressleiste source/include/space/space_profile.php diese Datei. Aber in dieser Datei kann ich keinen Code zur Aufmerksamkeit finden.
Diese Datei enthält jedoch alle notwendigen Daten zum Benutzerbereich. Zum Beispiel die Anzahl der Fans der Benutzer, die Anzahl der Themen der Benutzer, die Anzahl der Follower der Benutzer und die Anzahl der Freunde der Benutzer. Diese Werte werden in der Variablen $space gespeichert und die Schnittstelle wird direkt in der Vorlage verwendet. Für diese Felder können Sie direkt im Datenbankwörterbuch nach Schlüsselwörtern suchen
Also werfen wir einen Blick auf das spacecp-Modul. In diesem Verzeichnis haben wir die folgende Datei gefunden. Die englische Übersetzung von follow bedeutet folgen.
Wenn wir die Projekte anderer Leute kennenlernen, müssen wir erstens das Dokument lesen und zweitens müssen wir seine Bedeutung anhand der Verzeichnisstruktur und des Dateinamens erraten
Datei öffnensource/include/spacecp/spacecp_follow.php. Am Anfang der Datei stehen zwei Werte, ein add und ein del. Verwenden Sie dann die op-Variable, um sie zu empfangen. Anhand dieser Op-Variablen können wir erkennen, dass das Hinzufügen eines Follows ein Add ist. Beim Abbrechen des Follows finden wir mit der Del-Methode
einen Wert in addfollow_not_follow_selfMein Verständnis davon ist, dass man nicht auf sich selbst achten kann. Sie können zur Bestätigung nach diesem Wert in der Sprache suchen. Hier wurde bewiesen, dass source/include/spacecp/spacecp_follow.php die Datei ist, die Folgendes implementiert:
Der nächste Schritt ist, wie um eine Anfrage zu stellen Wolltuch!
Anhand der vier $_GET-Werte, auf die die Pfeile unten zeigen, ist die Anforderungsadresse, die wir ermitteln können,
home.php?mod=spacecp&ac=follow&op=add&hash={FORMHASH}&fuid={$space[uid]}&mobile=2
Was den Grund der Anforderung betrifft Die Adresse kann bestimmt werden, wir werden sie später vorstellen. Der Schwerpunkt dieses Artikels liegt auf der Funktion
Dann schreiben wir Der folgende Code in der Vorlage ist der Stil, der sich darauf konzentriert
关注ta
Klicken Sie zum Folgen, jetzt sind wir bereit zu folgen. Das Gleiche gilt dann auch für das Entfolgen!
Als nächstes suchen wir im Datenbankwörterbuch nach dem Schlüsselwort folgen und stellen fest, dass es eine Benutzer-Follow-Beziehungstabelle
gibt打开数据库查到pre_home_follow 这个表,就会发现有一条数据就是关注者跟被关注者。
在上文中我们实现了关注与取消关注,但是当我们关注了用户后,是不是需要显示已关注 或者 关注ta的字样
我们打开数据库字典搜索pre_common_member_count 用户统计表。
在这个表里边我们发现有收听数量和听众数量。那么对应的就是关注数量和粉丝数量
然后打开文件source/include/space/space_profile.php加上代码
# 判断是否关注 $follow_data = DB::fetch_all("select * from pre_home_follow where uid = '$_G[uid]' and followuid = '$space[uid]' limit 1"); if(!empty($follow_data)){ $space['is_follow'] = $follow_data[0]['mutual']; }
在template/default/touch/home/space_profile.htm模板里边进行判断
没有关注时显示关注ta
关注之后显示以关注
关于本文的实现关注功能。在网上的资料不是很多,但是我们也可以自己去研究实现。后期会一直推送discuz的文章。有任何问题,评论区见。
Das obige ist der detaillierte Inhalt vonWie Discuz die Aufmerksamkeitsfunktion entwickelt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!