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 ?
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.
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.
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.
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é…
…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 ~.
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 .
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 .
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.
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.