Heim  >  Artikel  >  CMS-Tutorial  >  Wie Discuz die Aufmerksamkeitsfunktion entwickelt

Wie Discuz die Aufmerksamkeitsfunktion entwickelt

咔咔
咔咔Original
2020-05-07 12:08:523706Durchsuche

Die in diesem Artikel implementierten Funktionen:

1. Benutzern folgen und entfolgen

2. Folgende Beziehung zum Benutzer festlegen

Erzielen Sie den Effekt

Nachdem Sie auf „Folgen“ geklickt haben, wird es wie folgt angezeigt, und nach dem Entfolgen wird es wie folgt angezeigt

Wie Discuz die Aufmerksamkeitsfunktion entwickelt

Wie Discuz die Aufmerksamkeitsfunktion entwickelt

Implementierungsplan

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)

Wie Discuz die Aufmerksamkeitsfunktion entwickelt

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

Wie Discuz die Aufmerksamkeitsfunktion entwickelt

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

Wie Discuz die Aufmerksamkeitsfunktion entwickelt

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

Wie Discuz die Aufmerksamkeitsfunktion entwickelt

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:

Wie Discuz die Aufmerksamkeitsfunktion entwickelt

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

Wie Discuz die Aufmerksamkeitsfunktion entwickelt

Dann schreiben wir Der folgende Code in der Vorlage ist der Stil, der sich darauf konzentriert

          

Wie Discuz die Aufmerksamkeitsfunktion entwickelt

Klicken Sie zum Folgen, jetzt sind wir bereit zu folgen. Das Gleiche gilt dann auch für das Entfolgen!

Wie Discuz die Aufmerksamkeitsfunktion entwickelt

Als nächstes suchen wir im Datenbankwörterbuch nach dem Schlüsselwort folgen und stellen fest, dass es eine Benutzer-Follow-Beziehungstabelle

Wie Discuz die Aufmerksamkeitsfunktion entwickelt

gibt

打开数据库查到pre_home_follow 这个表,就会发现有一条数据就是关注者跟被关注者。

Wie Discuz die Aufmerksamkeitsfunktion entwickelt

在上文中我们实现了关注与取消关注,但是当我们关注了用户后,是不是需要显示已关注  或者 关注ta的字样

处理是否显示关注

我们打开数据库字典搜索pre_common_member_count 用户统计表

在这个表里边我们发现有收听数量和听众数量。那么对应的就是关注数量和粉丝数量

Wie Discuz die Aufmerksamkeitsfunktion entwickelt

然后打开文件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

Wie Discuz die Aufmerksamkeitsfunktion entwickelt

关注之后显示以关注

Wie Discuz die Aufmerksamkeitsfunktion entwickelt

总结

关于本文的实现关注功能。在网上的资料不是很多,但是我们也可以自己去研究实现。后期会一直推送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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn