Comment puis-je trouver les emplacements des modèles Discourse pour les définir dans le code ?
Je suis particulièrement intéressé par le nom correct de la carte d’utilisateur
Il existe un composant de thème très pratique pour localiser les emplacements d’extension (plugin outlets) de nos différents modèles Handlebars : (deprecated) Plugin outlet locations theme component. À la fin du premier message, vous trouverez un lien vers un aperçu de ce composant sur notre site de création de thèmes. Vous pouvez l’utiliser pour identifier la plupart des emplacements d’extension sans même avoir à l’installer sur votre propre site.
Il est important de noter que les modèles (templates) et les widgets sont deux concepts distincts. Cela dit, ils peuvent fonctionner ensemble si nécessaire en attachant un widget à un emplacement d’extension d’un modèle. Cependant, il est plus courant d’utiliser des connecteurs, des composants ou des contrôleurs pour interagir avec les emplacements d’extension, comme vous le feriez dans un plugin.
Cette section du guide pour les développeurs couvre en grande partie ce que vous recherchez. Je vous recommande également de parcourir les dépôts GitHub des composants de thème dans notre catégorie #theme pour voir de bons exemples.
Merci pour l’indice ! J’ai trouvé la partie nécessaire user-card-post-names:after.
J’ai essayé de l’utiliser dans le code original, mais sans succès.
J’ai remplacé poster-name:after par user-card-post-names:after, mais cela n’a pas fonctionné et le champ personnalisé n’est pas visible sur la carte utilisateur. Avez-vous des idées sur la raison de cela ?
Vous ne pourrez pas utiliser decorateWidget() sur une sortie de plugin. Essayez quelque chose comme ceci :
<script type="text/discourse-plugin" version="0.8.42">
const h = require("virtual-dom").h;
api.createWidget("user-card-custom-field", {
html(attrs) {
const userCustomFields = attrs.user.custom_fields;
if (userCustomFields.user_field_4) {
return h('span.poster-user-field', userCustomFields.user_field_4);
}
}
});
</script>
<script type="text/x-handlebars" data-template-name="/connectors/user-card-post-names/user-card-custom-field">
{{mount-widget widget="user-card-custom-field" args=(hash user=user)}}
</script>
mount-widget transmet l’objet utilisateur disponible depuis la sortie de plugin dans le noyau et le rend accessible dans les attributs du widget user-card-custom-field que nous avons créé.
Assurez-vous d’avoir ajouté user_field_4 à vos paramètres de site « Champs personnalisés publics des utilisateurs » ou « Champs personnalisés des membres du personnel », selon le cas.
Édition
De plus, sauf si vous avez besoin de faire quelque chose de particulièrement spécial, vous devriez pouvoir éviter les widgets et utiliser directement la sortie de plugin :
<script type="text/x-handlebars" data-template-name="/connectors/user-card-post-names/user-card-custom-field">
{{#if user.custom_fields.user_field_1}}
<span class="poster-user-field">{{user.custom_fields.user_field_1}}</span>
{{/if}}
</script>
Merci beaucoup ! Tout fonctionne.
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.

