web-dev-qa-db-fra.com

Chargement d'images dans une configuration multilingue de plusieurs sites

J'ai des composants personnalisés qui spécifient des images en CSS ou en ligne avec des chemins relatifs:

<img src=\"images/loader.gif\">

Le problème est que j'ai une configuration multi-site (je n'utilise aucune extension tierce) où le site est défini pour être une langue spécifique. Donc, quand vous allez sur le site, dites www.anothersite.com, il n’est qu’espagnol. Lorsque vous accédez à une URL, Joomla insère le code de paramètres régionaux conformément à ce que j’ai configuré dans le gestionnaire de langues. c'est à dire.

www.anothersite.com/es/stuff

C'est un problème avec mes composants personnalisés, car toutes les images essaient maintenant de résoudre le problème:

www.anothersite.com/es/images/loader.gif

Ce qui est incorrect car c'est à:

www.anothersite.com/images/loader.gif

J'ai également des sites en anglais dans ma configuration multi-site, il est donc important de résoudre les problèmes suivants: www.anothersite.com/images/loader.gif ou du moins quelque chose de cohérent.

Je ne souhaite pas intégrer le sélecteur de langue car chaque site doit être une langue dédiée et je doute que cela change quoi que ce soit. Je peux certainement ajouter la langue locale à mon code, mais ce n'est pas une solution très élégante. Y a-t-il une meilleure manière de faire cela?

4
Tom

Je n'ai pas été en mesure de reproduire votre erreur, mais vous pouvez supprimer le code de langue du plug-in Filtre de langue en définissant "Supprimer le code de langue de l'URL sur YES. Cela supprimera les /es/ Ou /en/. partie de votre URL.

Language Filter Plugin

Vous pouvez également utiliser des chemins absolus dans le composant avec la chaîne JURI::root():

<img src="<?php echo 'JURI::root()'; ?>images/loader.gif">
3
johanpw

Ceci est probablement dû à une valeur de balise <base> Incorrecte générée automatiquement par Joomla dans une configuration multilingue lorsque SEF et la réécriture d'URL sont activées. Vous pouvez résoudre ce problème en supprimant la balise <base> Générée par Joomla, puis en ajoutant une nouvelle manuellement.

Ouvrez le fichier index.php de votre modèle, à l'intérieur de la balise <head>, Après que <jdoc:include type="head" /> Ajoutez ce code:

<?php
$doc = JFactory::getDocument();
unset($doc->base); ?>
<base href="<?php echo JURI::root(); ?>">

Testé avec Joomla 3.6.5

1
webchun