web-dev-qa-db-fra.com

Ajouter un champ à la table Utilisateurs de joomla

Peut-on ajouter un champ supplémentaire directement à la table des utilisateurs? Nous avons un concept comme l'utilisateur peut recevoir une notification ou non. Ici, si nous ajoutons des données au champ de profils, nous ne pouvons pas comparer ce champ directement dans une requête SQL car il stocke des données dans la colonne attribut de la table de profil utilisateur. Nous prévoyons d'ajouter des champs supplémentaires dans la table des utilisateurs directement dans la base de données. Il est valide et créera n’importe quel problème dans la mise à niveau de Joomla.

Notre nouveau champ ne sera pas affiché sur l’administrateur Joomla où nous ajoutons des informations sur les utilisateurs pour la gestion des utilisateurs.

Ce serait formidable si quelqu'un pouvait expliquer ici ce que nous devons faire dans ce type de fonctionnalité.

4
Info Truth

C'est presque toujours une erreur de changer un noyau de Joomla, car des correctifs et des correctifs de base de données pourraient remplacer votre travail. En outre, toute extension tierce s'attendra à ce que la structure de la base de données soit standard, ce qui pourrait entraîner des conflits.

En fin de compte user_profiles est le bon endroit pour mettre les informations.

La seule information officielle que je pourrais trouver sur la façon dont ils s'attendent à ce qu'elle soit utilisée est cette mention sur un ajout de champs à des articles tutoriel:

Le contenu des champs personnalisés supplémentaires doit être stocké dans la base de données. L'idéal serait qu'ils aient leur propre table de base de données dédiée. Cela nécessite cependant une surcharge considérable. Avec Joomla 2.5, il est possible d’étendre le profil de l’utilisateur. Les champs supplémentaires sont stockés dans la table #__user_profiles. Cette table est construite et utilisée de manière à pouvoir contenir les champs d'article supplémentaires. (Je voudrais spark la discussion pour faire évoluer __user_profiles dans une table générique pour développer les tables principales).

Mon sentiment est que le problème ici est plus probablement votre mySQL - une question ici montre comment joindre les deux tables dans votre requête.

2
Richard B

Je suis tout à fait d'accord avec les deux premiers paragraphes de Richard B, mais les parties suivantes sont à la fois dépassées et trop compliquées, à l'exception des administrateurs très compétents (qui ne rechercheraient pas cette question). Donc, au lieu d’éditer cette réponse en profondeur (comme j’ai commencé à le faire, mais j’ai eu l’impression de mettre des mots dans sa bouche), je vais commencer par répéter les deux paragraphes de départ, puis à partir de là:

C'est presque toujours une erreur de changer un noyau de Joomla, car les correctifs et les correctifs de base de données vont supprimer votre travail. En outre, toute extension tierce s'attendra à ce que la structure de la base de données soit standard, ce qui pourrait entraîner des conflits.

Le pré-fait jos_user_profiles table de base de données est l'endroit où vos informations doivent aller.

  1. Traditionnellement, dans un but aussi simple que le vôtre, vous pouvez (de façon créative/créative) utiliser le champ "notes" de chaque utilisateur et l'utiliser comme marqueur/indicateur.
  2. Le début évident/classique est le User - Profile _ plug-in fourni avec le noyau Joomla, exactement pour ajouter des champs utilisateur personnalisés. Activez-le et voyez ce qu'il peut faire. il a un backend où vous pouvez rendre chacun de ceux requis/facultatif/désactivé, séparément lors du premier enregistrement de l'utilisateur, puis ultérieurement lors de la modification de ses données de profil. Si vous êtes une personne terrible, vous éditez ce plugin directement dans votre but, faites une sauvegarde de celui-ci; et quand une mise à jour efface inévitablement votre travail (mais PAS vos données, en toute sécurité dans jos_user_profiles), vous réinstallez votre sauvegarde. Mais si vous êtes une personne raisonnable, vous suivez le tutoriel Création d'un plug-in de profil (en remplaçant chaque profile5 avec un nom raisonnablement unique; Alfred E. Neumann, par exemple, crée le plugin aenprofile à partir de ses initiales; cette convention de nommage évite les conflits sauf avec le travail d’Albert E. Northwood) . Ce didacticiel explique comment ajouter une variété de champs, du texte à des listes déroulantes et à un calendrier, en passant par un contrat de licence d'utilisateur "Accepter les conditions d'utilisation du service, oui/non". C'est l'approche classique. C'est la voie à suivre si vous avez beaucoup de champs à ajouter et que vous souhaitez contrôler leur présentation, etc. Mais c’est trop de travail pour votre propos, je pense (il faudrait tout de même ajouter une substitution via [yourTemplateName] > overrides > com_users pour le cacher aux utilisateurs, ou de manière moins complète via CSS avec display:none sur l'ID du champ de formulaire.
  3. Toutefois, si votre site Web est mis à jour à Joomla 3.7 et au-delà (et cela ne devrait absolument pas être le cas, aucune excuse, sauf si vous utilisez des plug-ins tiers dangereusement obsolètes ou une plate-forme développée de manière coûteuse, où les sous-traitants ont disparu. ), alors vous pouvez utiliser custom fields'. They're right there, in the back-end: Click onUtilisateurs 'et dans ce menu déroulant, vous voyez Fields et Fieldgroups. Le documentation officielle est encore à la traîne (ne traite que de l'ajout d'articles, de contacts et de formulaires de contact, aujourd'hui 28 sept. 2017), mais explique comment l'ajouter et les 15 types disponibles. Lors de la première recherche, Joomlashack propose un tutoriel mentionnant explicitement les champs utilisateur personnalisés; mais il y aura plus, et c'est assez simple, l'article renforce la confiance, pas vraiment la connaissance. Personnellement, je ne les ai pas utilisés (remarque: "champs personnalisés" correspond à la terminologie WordPress, vous souhaiterez peut-être effectuer une recherche à la fois avec et sans "personnalisé" dans votre question). ) .
0
user3445853

Le moyen le plus simple consiste à stocker ces données dans #__user_profiles. Mon conseil est de créer votre propre plugin de profil utilisateur, il vous suffit de copier/coller les versions existantes de Joomla! User plugin et étendre XML par vos nouveaux champs.

Le principal avantage de ces solutions est que vous pouvez facilement obtenir une validation et activer/désactiver ces champs dans le processus d'enregistrement de l'utilisateur.

0
Bartłomiej Krztuk