Rendre le statut utilisateur personnalisé plus visible

J’ai fait une variante de ceci, mais pour afficher des champs utilisateur personnalisés sous le nom de l’afficheur. J’ai créé un composant de thème et utilisé ceci pour le JS :

import Component from "@glimmer/component";
import { withPluginApi } from "discourse/lib/plugin-api";
import { get } from "@ember/object"; // Nous en avons toujours besoin

// ici, ajoutez l'ID du champ personnalisé, préfixé par "user_field_"

// pour obtenir l'ID du champ utilisateur :
// 1. allez dans admin/config/user-fields
// 2. cliquez sur le nom du champ utilisateur
// 3. l'ID du champ utilisateur est affiché dans l'URL après admin/config/user-fields/

const FIELDS_TO_SHOW = [
  { fieldKey: "user_field_2", display: "inline" }, 
  { fieldKey: "user_field_1", display: "block" }   
];
// ----------------------------------------


function addCustomFields(api) {
  
  FIELDS_TO_SHOW.forEach(config => {
    
    api.renderAfterWrapperOutlet(
      "post-meta-data-poster-name",
      class extends Component {
        
        // getter pour passer la clé au template
        get currentFieldKey() {
          return config.fieldKey;
        }

        // getter pour passer le type d'affichage au template
        get currentDisplayType() {
          return config.display;
        }

        static shouldRender(args) {
          // utilisez config.fieldKey pour trouver les données
          const value = get(args.post.user.custom_fields, config.fieldKey);
          return !!value;
        }

        <template>
          <div class="
            poster-custom-field
            poster-custom-field-{{this.currentDisplayType}}
            field-{{this.currentFieldKey}}
          ">
            {{get @post.user.custom_fields this.currentFieldKey}}
          </div>
        </template>
      }
    );
  });
}


export default {
  name: "show-poster-custom-fields",
  initialize() {
    withPluginApi("1.0.0", (api) => {
      addCustomFields(api);
    });
  }
};

et ensuite utilisé ceci pour le css :

.topic-meta-data .names {
  flex-wrap: wrap;
  align-items: baseline;
}


// styles de base pour tout affichage de champ personnalisé
.poster-custom-field {
  font-size: 0.9em;
  color: var(--primary-high-or-secondary-low);
  flex-shrink: 0;
}

// style pour l'affichage en ligne
.poster-custom-field-inline {
  display: inline-block; 
  margin-left: 8px;
  order: 5;
}

.topic-meta-data .names .user-title {
    order: 10;
    flex-basis: 100%;
    width: 100%;
    display: block;
    margin-left: 0;
    margin-top: 2px;
    font-size: 0.9em;
    color: var(--primary-high-or-secondary-low);
}

// style pour sous l'affichage du nom
.poster-custom-field-block {
  flex-basis: 100%;
  margin-top: 4px;
  order: 20;
}

Voici à quoi cela ressemble en pratique - “more stuff” et “some information” est le contenu des deux champs personnalisés.

Comme @NateDhaliwal l’a dit, je pense que vous pourriez utiliser this.user.status pour afficher le statut de l’utilisateur à la place des champs personnalisés que j’ai.

1 « J'aime »