Maison >Tutoriel CMS >Discuz >Comment Discuz développe la fonction d'attention

Comment Discuz développe la fonction d'attention

咔咔
咔咔original
2020-05-07 12:08:524024parcourir

Les fonctions implémentées dans cet article :

1. Suivre et ne plus suivre les utilisateurs

2. Déterminer la relation suivante avec l'utilisateur

Obtenir l'effet

Après avoir cliqué pour suivre, il sera affiché comme suivi, et après avoir désabonné, il sera affiché comme suivant

Comment Discuz développe la fonction dattention

Comment Discuz développe la fonction dattention

Plan de mise en œuvre

L'entrée de l'espace utilisateur est le fichier home.php, nous devons donc commencer par le fichier home.php en premier

Ouvrez le fichier home.php À la ligne 29, vous pouvez voir que in_array a été utilisé pour porter un jugement, en se concentrant sur les deux modules space et spacecp

Reconnaissons d'abord deux mots : space (espace) et spacecp (traduit par programme spatial)

Comment Discuz développe la fonction dattention

Ensuite, nous devons ouvrir le modèle par défaut d'origine de discuz (c'est lorsque vous créez vous-même une application discuz sans aucune modification code), puis publiez un sujet et cliquez sur l'image d'un utilisateur. Affichez les informations d'adresse dans la barre d'adresse.

J'ai découvert que j'étais entré dans le module espace

Comment Discuz développe la fonction dattention

Ensuite selon la barre d'adresse on peut trouver source/include/space/space_profile.php ce fichier. Mais dans ce fichier, je ne trouve aucun code sur l'attention.

Mais ce fichier contient toutes les données nécessaires sur l'espace utilisateur. Par exemple, le nombre de fans des utilisateurs, le nombre de sujets utilisateur, le nombre de followers des utilisateurs et le nombre d'amis des utilisateurs. Ces valeurs sont stockées dans la variable $space et l'interface est utilisée directement dans le modèle. Pour ces champs, vous pouvez rechercher directement des mots-clés dans le dictionnaire de la base de données

Nous jetons donc un œil au module spacecp Dans ce répertoire, nous avons trouvé le fichier suivant. La traduction anglaise de follow signifie suivre.

Lorsque nous apprenons les projets d'autres personnes, nous devons d'abord lire le document, et deuxièmement, nous devons deviner sa signification en fonction de la structure du répertoire et du nom du fichier

Comment Discuz développe la fonction dattention

Ouvrir le fichiersource/include/spacecp/spacecp_follow.php. Il y a deux valeurs au début du fichier, une add et une del. Utilisez ensuite la variable op pour la recevoir. D'après cette variable op, on peut savoir que l'ajout d'un follow est add Lors de l'annulation du follow, la méthode del

Comment Discuz développe la fonction dattention

on trouve une valeur dans addfollow_not_follow_selfJe comprends que vous ne pouvez pas faire attention à vous-même. Vous pouvez rechercher cette valeur dans la langue pour confirmer. Il a été prouvé ici que source/include/spacecp/spacecp_follow.php est le fichier qui implémente ce qui suit

Comment Discuz développe la fonction dattention

La prochaine étape est de savoir comment pour faire une demande Drap de laine !

Selon les quatre valeurs $_GET pointées par les flèches ci-dessous, l'adresse de la demande que nous pouvons déterminer est

home.php?mod=spacecp&ac=follow&op=add&hash={FORMHASH}&fuid={$space[uid]}&mobile=2

Quant à la raison pour laquelle la demande L'adresse peut être déterminée, nous la présenterons plus tard. , l'objectif de cet article est de se concentrer sur la fonction

Comment Discuz développe la fonction dattention

Ensuite, nous écrivons le code suivant dans le modèle, qui est le style qui se concentre dessus

          

Comment Discuz développe la fonction dattention

Cliquez pour suivre, maintenant nous sommes prêts à suivre. Ensuite, il en va de même pour ne plus suivre !

Comment Discuz développe la fonction dattention

Ensuite, nous recherchons dans le dictionnaire de la base de données en fonction du mot-clé follow et constatons qu'il y aura une table de relation de suivi des utilisateurs

Comment Discuz développe la fonction dattention

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

Comment Discuz développe la fonction dattention

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

处理是否显示关注

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

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

Comment Discuz développe la fonction dattention

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

Comment Discuz développe la fonction dattention

关注之后显示以关注

Comment Discuz développe la fonction dattention

总结

关于本文的实现关注功能。在网上的资料不是很多,但是我们也可以自己去研究实现。后期会一直推送discuz的文章。有任何问题,评论区见。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn