2010-10-14 26 views
0

Obtenons au point,Comment puis-je changer le dossier de mon URL avec JQuery?

quand sur ce site

mysite.com/en/index.html

ou

mysite.com/en/model1/index.html

et en cliquant sur un <a href="swap current url to /FR/...">FR</a> (ou drapeau du pays img) Que faire pour charger cette autre page?

mysite.com/fr/index.html

ou

mysite.com/fr/model1/index.html

Je sais que le plugin urlParser JQuery pour obtenir le chemin, il est juste que je suis un n00b et je ne peux pas coder du tout (juste faire de la beauté html + css). :)

Merci à tous.

+0

Voulez-vous savoir comment déplacer le navigateur vers une URL spécifique en utilisant jQuery? Ou utilisez-vous une sorte d'ajax ici? – Jeriko

+0

Pas d'ajax, je veux juste vérifier l'URL actuelle et changer le dossier supérieur (langue). – Rod

+0

Rod, on dirait que vous venez juste de poser votre question, et ensuite n'est jamais revenu. J'espère que vous avez votre réponse, que ce soit la mienne ou quelqu'un d'autre. Cependant, si vous avez le temps et l'envie, faites savoir aux gens du futur comment les choses se sont déroulées, soit en choisissant une bonne réponse ou en écrivant ce que vous avez finalement compris. De cette façon, d'autres personnes peuvent apprendre et nous nous améliorons tous. Juste une pensée. – AndyD273

Répondre

0

Vous pouvez utiliser des URL absolues dans les liens comme

href="/fr/index.html" 

ou

href="/fr/model1/index.html" 

ou obtenir le compnonent linguistique de l'URL en cours et de le remplacer par le nouveau

var current_language = jQuery.url.segment(1); 

var str = document.location; 

var new_url = str.replace('/' + current_language + '/', "/fr/"); 

Quelque chose comme ça

+0

Ok, mais alors je dois mettre manuellement le langage courant – Rod

+0

Utilisez-vous le même code pour chaque langue ou vous avez des copies séparées pour chaque langue. Utilisez-vous du HTML pur, CSS, JS ou vous utilisez un langage de script comme PHP? Fournissez plus d'informations que vous voulez réaliser s'il vous plaît. Les solutions "Dror" me semblent bonnes. –

+0

Pas de PHP, juste des pages HTML statiques – Rod

0

Je ne suis pas sûr s'il devrait y avoir une relation entre votre URL actuelle et votre URL cible, à en juger par votre texte, désolé, mais en général ce serait comment vous appliquez un écouteur de clic à tous les éléments (spécifier avec class/id) et laissez-ouvrir une URL spécifique:

$(document).ready(function(){ 
    $('a').click(function() { 
    window.location = "http://mysite.com/fr/index.html"; 
    }); 
}); 
+0

C'est propre mais juste comme un a> normal avec href. Le but est d'obtenir le chemin actuel où que vous soyez, d'obtenir la première partie (dossier de langue) et de l'échanger vers un autre. Si vous êtes à la maison anglaise et cliquez sur le lien FR vous êtes conduit à la maison française ou si vous êtes à l'intérieur de la page française À PROPOS et cliquez sur EN pris à l'anglais À PROPOS (juste en changeant cette partie du chemin .com/FR/...) – Rod

+0

aaaaaaaaaaah, maintenant je reçois ce que vous voulez: D Eh bien, désolé alors, mais à la fin, faites juste 'window.location = window.location.replace ('/ en /', '/ fr /') ; 'bien sûr, il serait plus logique d'utiliser une variable puis de fixer '/ en /' mais il existe de nombreuses approches pour cela, vous pouvez vérifier l'URL actuelle pour l'occurence de/fr/ou/en/et agir avec cookie, placez-le quelque part dans l'élément cliqué et accédez à cela via jQuery ect. – Hannes

0

avez-vous besoin de remplacer le /en/ dans le chemin de /fr/?
si utilisez ceci:

$(document).ready(function(){ 
    $('a').click(function() { 
    document.location.href =document.location.href.replace('/en/' '/fr/'); 
    }); 
}); 
+0

C'est impressionnant. Mais travaille juste d'une manière. Je suppose que j'ai besoin d'un tableau avec toutes les langues possibles ou analyser l'URL et le changer ensuite. – Rod

0

S'il y a plus d'une langue ajouter language="en" ou language="fr" ou tout ce que vous voulez à chaque balise de lien et de mettre ce code:

$(document).ready(function(){ 
    $('a').click(function() { 
    var language = $(this).attr('language') 
    document.location.href =document.location.href.replace('/en/' '/'+language+'/'); 
    }); 
}); 

De cette façon, vous définirez la langue vers laquelle le lien pointera dans le code HTML

+0

Super! impressionnant. Merci beaucoup. – Rod

1

En supposant que la structure du répertoire est la même pour chaque langue ...

quelque chose d'aussi simple que:

<script> 
    //set a global var 
    var current = '/en/'; 
    function changeLanguage(to){ 
     var from = document.location.href; 
     var url = from.replace('/' + current + '/', to); 
     document.location = url; 
    } 
</script> 
<img src="frenchflag.jpg" onclick="changeLanguage('/fr/')" /> 
<img src="swissflag.jpg" onclick="changeLanguage('/sw/')" /> 
<img src="britishflag.jpg" onclick="changeLanguage('/en/')" /> 

puis sur chaque page que vous venez de coller et de modifier la variable courante et de supprimer l'image pour cette langue. Avec un peu plus de travail, vous pouvez automatiser cette partie aussi si vous avez beaucoup de pages.

+0

C'est vraiment sympa mais si je veux utiliser le même extrait pour tout le site (à l'intérieur d'un entête inclus)? – Rod

+0

Ensuite, faites quelque chose pour détecter sur quelle page vous êtes. Quelque chose comme 'var current = jQuery.url.segment (1);' et choisi quel drapeau ne s'affiche pas en utilisant le code. '

' – AndyD273

+0

Je devrais noter que je n'ai jamais utilisé jQuery.url.segment, juste pris l'exemple de l'autre poste. 'var url = '/' + document.location.href.split ("/") [3] + '/';' retournera quelque chose de similaire à ce que url.segment est censé faire. (3 peut ne pas être la bonne position pour 'en', vous devrez jouer avec) – AndyD273

0

Je me suis amélioré la réponse de Dror (par la façon dont son code manque une virgule entre le '/fr/' et '/fr/' ).
Maintenant, il travaille dans «deux» manières comme vous semblent demander:

$(document).ready(function(){ 
    $('a').click(function() { 
     if (window.location.href.indexOf("fr") > -1) { 
      document.location.href =document.location.href.replace('/fr/','/en/'); 
     } else { 
      document.location.href =document.location.href.replace('/en/','/fr/'); 
     } 
    }); 
});