У меня есть сайт в WP, который имеет несколько языков, таких как (English,German and French)
. вот URL выглядит так :http://example.com(english). http://example.com/?lang=fr(french) and http://example.com/?lang=de(german)
Я пытаюсь сменить язык перед загрузкой страницы. index.php
но это создает проблему.
Мой код:
$currentUrl = 'this is current page url';
$store_code = "french";
switch ($store_code) {
case 'french':
$_baseurl = $currentUrl."?lang=fr";
echo "<script type='text/javascript'>window.location='{$_baseurl}'</script>";
break;
case 'german':
$_baseurl = $currentUrl."?lang=de";
echo "<script type='text/javascript'>window.location='{$_baseurl}'</script>";
break;
case 'mandarin':
$_baseurl = $currentUrl."?lang=zh";
echo "<script type='text/javascript'>window.location='{$_baseurl}'</script>";
break;
default:
$_baseurl = $currentUrl;
echo "<script type='text/javascript'>window.location='{$_baseurl}'</script>";
break;
}
Output.
Это генерирует URL, как это с пустой страницей.
http://example.com/?lang=fr?lang=fr?lang=fr?lang=fr?lang=fr?lang=fr?lang=fr?lang=fr?lang=fr?lang=fr?lang=fr?lang=fr?lang=fr?lang=fr?lang=fr
Я решил это с помощью условия перед переключением statment.It работает
define('WP_USE_THEMES', true);
require("../app/Mage.php");
umask(0);
Mage::app('default');
$currentUrl = Mage::helper('core/url')->getCurrentUrl();
$store_code = Mage::app()->getStore()->getCode();
if(Mage::getSingleton('core/session', array('name' => 'frontend'))->getData("foo") !='bar')
{
Mage::getSingleton('core/session')->setData("foo","bar");
switch ($store_code) {
case 'french':
$_baseurl = $currentUrl."?lang=fr";
echo "<script type='text/javascript'>window.location='{$_baseurl}'</script>";
break;
case 'german':
$_baseurl = $currentUrl."?lang=de";
echo "<script type='text/javascript'>window.location='{$_baseurl}'</script>";
break;
case 'mandarin':
$_baseurl = $currentUrl."?lang=zh";
echo "<script type='text/javascript'>window.location='{$_baseurl}'</script>";
break;
default:
$_baseurl = $currentUrl;
echo "<script type='text/javascript'>window.location='{$_baseurl}'</script>";
break;
}
}
На стороне Magento я установил сессию до события загрузки макета, как это.
Mage::getSingleton('core/session')->setData("foo","magento");
Генерирует output
как это, потому что вы взяли только Французский в switch.So каждый раз, когда он получает это case
только. Что вы можете сделать, это сделать массив этого языка и после этого использовать его в switch
как это:
$currentUrl = 'this is current page url';
$store_code = array('french', 'german', 'mandarin');
foreach($store_code as $mylang){
switch ($mylang) {
case 'french':
$_baseurl = $currentUrl."?lang=fr";
echo "<script type='text/javascript'>window.location='{$_baseurl}'</script>";
break;
case 'german':
$_baseurl = $currentUrl."?lang=de";
echo "<script type='text/javascript'>window.location='{$_baseurl}'</script>";
break;
case 'mandarin':
$_baseurl = $currentUrl."?lang=zh";
echo "<script type='text/javascript'>window.location='{$_baseurl}'</script>";
break;
default:
$_baseurl = $currentUrl;
echo "<script type='text/javascript'>window.location='{$_baseurl}'</script>";
break;
}
}
Пожалуйста, дайте мне знать результат здесь.