Faire apparaître la bannière de tag aussi sur les pages de sujets tagués

Bonjour à tous

Je voudrais savoir s’il est possible d’avoir un formulaire dans chaque sujet où, en haut du sujet, j’ai les détails nécessaires d’un client, disons comme une étiquette (tag).

Ce formulaire pourrait être ajouté à plus d’un sujet et afficher les détails du client, disons

sans avoir à créer une catégorie puisque nous créons des catégories selon d’autres critères
ou toute autre solution qui m’aiderait à afficher automatiquement les détails d’un client dans plusieurs sujets et catégories ?

Je ne pense pas qu’il existe de fonctionnalité existante pour cela. Vous devriez probablement utiliser un plugin.

Cependant, je pourrais me tromper. Pourriez-vous développer davantage à ce sujet ? Merci.

quel plugin pourrait m’aider à construire ce flux de travail ?

Bonjour, pourriez-vous préciser votre question initiale ? Je la comprends peut-être mal.

Je pense que vous pourriez avoir besoin de faire quelque chose de personnalisé, mais il est difficile de le dire avec certitude sans plus de détails.

Est-ce que ce que vous recherchez est un formulaire dans la publication du sujet, qui ajoute des étiquettes au sujet en fonction du contenu du formulaire ? Parce que dans ce cas, vous pourriez peut-être vous en sortir avec un composant de thème (Theme Component) à la place.

Si je comprends bien votre question, il semble que vous utilisiez une étiquette pour chaque client et que vous souhaitiez qu’une description étendue du client apparaisse lors de la consultation de n’importe quel sujet contenant cette étiquette.

Ce n’est pas vraiment un formulaire, mais le composant Tag Banners, tel que vu ici sur Meta, pourrait vous amener à mi-chemin :

Avec ce composant installé, vous pouvez ajouter une description textuelle pour chaque étiquette qui apparaîtra dans une bannière affichée lorsque l’étiquette elle-même est sélectionnée. Le champ de texte accepte du HTML et peut être stylisé avec du CSS personnalisé, vous pourriez donc faire pas mal de choses avec, mais voici un exemple très simple où je modifie une étiquette :

Le défi serait de modifier ce composant pour qu’il s’affiche non seulement sur la page de l’étiquette, mais sur chaque sujet utilisant cette étiquette. Je ne sais pas combien de travail cela représenterait, mais un codeur plus expérimenté (comme Nate…) pourrait avoir une idée.

2 « J'aime »

Merci @toddz, cela m’a beaucoup aidé, c’est ce dont j’avais besoin

bien, "@NateDhaliwal la bannière d’étiquette m’aidera beaucoup, mais maintenant ma question est :

Comment la faire apparaître dans le sujet lui-même, de sorte que lorsque j’ajoute l’étiquette, les détails apparaissent en haut du sujet"

:+1: D’accord, puisque j’ai compris votre question, je vais modifier le titre de ce sujet afin que peut-être plus de personnes y jetteront un œil.

J’imagine que cela nécessiterait de créer une copie (fork) du composant pour créer une nouvelle version, de déterminer ce qui déclenche l’apparition de la bannière sur la page des étiquettes, et de modifier cela pour que cela se déclenche également lorsque les sujets étiquetés sont consultés.

Vous pourriez avoir de la chance et quelqu’un trouvera cela amusant – sinon, vous pourriez avoir besoin de déterminer un budget de projet et de publier une demande dans le canal Marketplace.

2 « J'aime »

Je vois si c’est possible, j’expérimente avec ceci sur une branche. Aucune promesse, cependant !

@Eman_Ahmed Je l’ai ajouté dans ce fork :

Il prend le 1er tag de sujet et l’affiche. Contrôlé par le paramètre show on topics (afficher sur les sujets). S’il n’y a pas de tags, la bannière est masquée.

2 « J'aime »

C’est très gentil de votre part de vous en occuper, Nate. Je n’en ai pas besoin moi-même, mais j’étais impatient de l’essayer. Ça fonctionne très bien !

Je vois cependant un piège, lorsqu’il y a plusieurs étiquettes sur un sujet. (Et il est difficile d’imaginer gérer les choses avec une seule étiquette par sujet.)

Les étiquettes sont soit triées par ordre alphabétique, soit par popularité…

image

…donc l’auteur n’a aucun contrôle direct sur l’étiquette qui s’affiche en premier.

J’ai pensé qu’utiliser un caractère non alphabétique pour commencer les étiquettes client (~NomClient) pourrait toujours la faire apparaître en tête de liste. Cela fonctionne sur la page /tags – mais pas sur un sujet, où la liste des étiquettes ignore simplement le caractère ~. :face_with_diagonal_mouth:

Dans un sujet de l’année dernière, il semble que certains caractères non alphabétiques pouvaient être insérés de manière invisible pour forcer le tri : Invisible way to force display order of tags? mais il semble que cela ne fonctionne plus maintenant. Lorsque je crée une étiquette aujourd’hui avec une apostrophe ou une virgule, elle est soit rejetée, soit supprimée silencieusement. (Je ne sais pas pourquoi ~ est accepté.)

Le paramètre de tri des étiquettes montré ci-dessus affecte à la fois la page /tags et la liste des étiquettes sur les sujets – mais je suppose qu’ils doivent utiliser un algorithme alphabétique différent ?

Hmm… Je suppose que cela dépend vraiment de ce que l’OP souhaite faire. S’il y a 1 étiquette → 1 sujet → 1 utilisateur, alors cela fonctionnerait. Sinon, il faudra plus d’informations :person_shrugging:.

1 « J'aime »

Merci pour votre contribution !

J’aimerais savoir si cela pourrait éventuellement être ajouté à la liste officielle des mises à jour de fonctionnalités.

Je pense que j’ai aussi des scénarios où cela serait très approprié à utiliser.

Hmm… Je ne suis pas sûr que cela soit entièrement aligné avec le concept de base d’une « bannière d’étiquette » (tag banner), car elle était censée afficher les informations de l’étiquette sur la page de l’étiquette, mais celle-ci affiche les informations de l’étiquette dans les sujets avec l’étiquette :person_shrugging:.

Par ailleurs, il y a eu quelques mises à jour du composant principal, je devrai donc essayer de mettre à jour la fork également, mais notez que la fork est seulement destinée à être une preuve de concept.

2 « J'aime »

Oui, je ne sais pas si ce serait suffisamment utile pour ajouter les fonctionnalités au plugin d’origine. Une version séparée ou un module complémentaire appelé « Tagged Topic Banner » pourrait être plus approprié.

Mais je pense que l’utilité est assez limitée à moins qu’il n’y ait aussi un moyen pour l’auteur de spécifier quelle étiquette sera principale. Les seules choses auxquelles je peux penser sont…

1.) Un hack consistant à faire en sorte que le tri alphabétique traite un caractère comme ~ comme étant en haut de la liste.

AskBot a suggéré une approche pour un *monkey-patch* de plugin
# plugin.rb
after_initialize do
  module ::CustomTagSort
    def custom_tag_sort(tags)
      tags.sort_by do |tag|
        # Met les étiquettes préfixées par ~ en premier, puis trie de A à Z
        [tag.name.start_with?("~") ? 0 : 1, tag.name.downcase]
      end
    end
  end

  # Patch dans le sérialiseur/méthode qui calcule visible_tags ou similaire
  require_dependency 'topic_tags_mixin'
  TopicTagsMixin.prepend(Module.new do
    private

    def all_tags
      return @tags if defined?(@tags)
      tags = topic.visible_tags(scope)
      if SiteSetting.tags_sort_alphabetically
        tags = ::CustomTagSort.custom_tag_sort(tags)
      else
        topic_count_column = Tag.topic_count_column(scope)
        tags = tags.sort_by { |tag| tag.public_send(topic_count_column) }.reverse
      end
      @tags = tags
    end
  end)
end

2.) Encore mieux : ordonner les étiquettes selon un ordre spécifié de groupes d’étiquettes.

Les recherches révèlent un certain nombre de sujets demandant plus de contrôle sur l’ordre des étiquettes, car cela est souvent important pour diverses raisons (genre → espèce, marque → modèle, etc.) – mais les réponses suggèrent que cela représenterait pas mal de travail.

1 « J'aime »