J’ai actuellement la redirection suivante sur mon site web : example.com/[0-9]+/[0-9]+ → example.com/tag/$1-$2 où $1 et $2 sont les valeurs de l’expression régulière précédente. J’ai écrit le plugin simple ci-dessous et il fonctionne parfaitement si je tape example.com/[0-9]+/[0-9]+ dans la barre d’url. Cependant, si je donne le même lien dans un post à l’intérieur de Discourse, la redirection ne fonctionne pas. Y a-t-il un moyen d’y parvenir ?
Discourse::Application.routes.append do
get '/:year/:id', to: redirect('/tag/%{year}-%{id}') , constraints: {year: /[0-9]+/, id: /[0-9]+/}
end
Mon objectif initial pour avoir cette route n’est pas lié aux importations. Je voudrais utiliser example.com/123/456 (123 et 456 sont arbitraires ici tant qu’ils sont tous deux [0-9]+) comme raccourci pour example.com/tag/123-456, donc il n’est pas sémantiquement « faux » de l’utiliser.
Cependant, la route ne fonctionne pas pour les liens internes (je dois actualiser le site web pour que la route fonctionne), par conséquent, je dois détecter chaque example.com/[0-9]+/[0-9]+ et le changer en example.com/tag/[0-9]+-[0-9]+, ce qui semble pratiquement impossible à faire sans analyser chaque nouveau post un par un.
Désolé. J’ai manqué le fait que vous n’aimez pas la route des tags. Pourquoi pensez-vous qu’il serait utile de changer cette route ? Les gens vont-ils les taper à la main ? Ils ne le feront pas, car Discourse leur permettra de les rechercher et de les saisir.
Pouvez-vous prendre du recul et dire quel problème vous résolvez en retirant « tag » de la route des tags ?
L’idée est que les utilisateurs puissent remplacer à la volée preprint.com par mywebsite.com et atterrir sur la page exacte de l’article qu’ils consultaient sur le serveur de prépublication. Cela fonctionnait bien jusqu’à ce que quelqu’un donne un lien interne mywebsite.com - This website is for sale! - mywebsite Resources and Information. dans un post et que nous réalisions qu’il ne redirigeait pas et donnait plutôt une erreur 404. J’utilise Discourse pour une base d’utilisateurs très spécifique et ciblée, donc mon cas d’utilisation peut sembler étrange.
Ah. Je pense que vous voulez un composant de thème qui réécrira ces liens lorsqu’ils seront saisis dans un message. Je ne suis pas tout à fait sûr comment faire cela. Premièrement, cela nécessiterait un peu de formation des utilisateurs, ce serait du bbcode pour ces liens. Mais je pense qu’un composant de thème pourrait simplement intercepter ces liens et les réécrire lorsqu’ils sont enregistrés.
Après avoir mentionné les composants de thème, j’ai pu accomplir partiellement ce que je cherchais en utilisant le composant suivant : Auto-Linkify Words
Génial ! Je pense qu’un composant de thème personnalisé pourrait aussi résoudre ceux avec https, mais peut-être que vous pouvez essayer de dissuader les gens de le faire, ou d’utiliser #123-456