Nous avons bien toute la logique en place pour les sprites SVG dans les scénarios de sous-dossiers, et elle est utilisée avec succès par plusieurs sites. Dans ce cas précis, nous avons rencontré un cas limite très spécifique. En examinant les variables clés sur le site de @vkozyrev (via la console du navigateur) :
> Discourse.SvgSpritePath
"/svg-sprite/sales-community-staging.rainmakers.co/svg-2-8ed106e6e3d908b1b86898dfe93a7bac0fd358f4.js"
> Discourse.BaseUri
"/sales-community"
Tout semble correct. Maintenant, lorsque nous chargeons la feuille de sprites SVG, nous utilisons loadScript, qui appelle à son tour Discourse.getURL. Cette fonction est chargée d’ajouter le préfixe du sous-dossier. Essayons :
> Discourse.getURL(Discourse.SvgSpritePath)
"/svg-sprite/sales-community-staging.rainmakers.co/svg-2-8ed106e6e3d908b1b86898dfe93a7bac0fd358f4.js"
Hé… cela n’a rien fait. Un autre URL aléatoire fonctionne correctement :
> Discourse.getURL("/blah")
"/sales-community/blah"
En creusant un peu plus, on tombe sur cette ligne à l’intérieur de getUrl :
if (url.indexOf(Discourse.BaseUri) !== -1) return url;
Ou, en français : « si l’URL contient déjà le préfixe du sous-dossier, on abandonne ». Le problème ici est que le préfixe du sous-dossier de @vkozyrev (/sales-community) est inclus au milieu de l’URL de la feuille de sprites SVG :
/svg-sprite/sales-community-staging.rainmakers.co/svg-2-8ed106e6e3d908b1b86898dfe93a7bac0fd358f4.js
J’ai rendu la vérification plus précise, de sorte qu’elle ne vérifie le préfixe du sous-dossier qu’au début de l’URL :
Cela me fait cependant penser à d’autres problèmes potentiels… par exemple, si quelqu’un voulait que son préfixe de sous-dossier soit /t ou /about, ou toute autre URL que nous utilisons dans Discourse ![]()