複数国のウェブサイトのロケールに応じて配送先の国を動的に設定する

私はCraft Pro
Commerceで構築している複数の国のウェブサイトを持っています。私は5カ国のロケールを設定しました。したがって、「新しい配送先住所」セクションでは、ロケールが「en」の場合を除いて現在のロケールの国に合わせて国のオプションを制限したいと考えています。これはキャッチオールで残りの国の配送オプション…

ボックスの外で、国選択フィールドのロジックは次のとおりです。


私はもう試した:


私はまた、Stackoverflowからアイデアの束を試してみましたが、必要に応じて動作するものを得ることができませんでした…


Have the country in craft.commerce.countriesList default
(too
static, I need something dynamic)


Locale-specific country select menu
(not really what I need…
I need to set the country for the Shipping address. I can create a
list of the countries whose locales I’ve selected in the CMS:


  • <form action=""
    name="dropdown"> </form>
  •  
    

    JSを使用してユーザーの国を取得できます

    function getCountry() {
        $.getJSON("http://freegeoip.net/json/", function (data) {
            var country = data.country_name;
            var country_code = data.country_code.toLowerCase();
            var country_code_url = country_code.toLowerCase();
            var ip = data.ip;
            var baseHrefSplash = baseHref + "/splash/";
    
            var s = baseHref
            search = '//'
            var n = 2
    
            var newBaseHref = baseHrefSplash.replace(RegExp("^(?:.*?//){" + n + "}"), function(x){return x.replace(RegExp(search + "$"), "/")})
    
            console.log("country: " + country);
            console.log("country code: " + country_code);
    
           //document.getElementById("test-country").innerHTML = country;
           //document.getElementById("test-country2").innerHTML = country_code_url;
    
           //if (country_code_url != urlEndingTrim ) {
           //    console.log("what url should i go to? " + newBaseHref)
           //    window.location = newBaseHref;
           //} else {
           //    console.log( urlEndingTrim + " is equal to " + country_code_url)
           //}
    
            $.cookie('the_cookie', country +  ", " + country_code_url);
            console.log($.cookie('the_cookie'));
    
    
            $("#address-country").val('country');
    
        }); 
    }
    

    私は本当に立ち往生しています…私はCMSに船積みゾーンを設定しました。船積みの国を設定する際にCMSを使用できるのは理想的ですが、現在の国のロケールを使用します。どうもありがとうございます!!!

    Update What I have figured out so far
    is this:

    私は本質的にhtmlだけを残しました、それはCraft Commerceプラグインの元のhtmlです:

    
    

    そして、jsファイルでは、私はこれを持っています:

    function setShippingCountry() {
        $.getJSON("http://freegeoip.net/json/", function (data) {
            var country = data.country_name;
            var country_code = data.country_code.toLowerCase();
            var country_code_url = country_code.toLowerCase();
            var ip = data.ip;
    
            if (country == 'Australia') {
                var temp="13"; 
                $("#address-country").val(temp);
                $('#address-country option[value!="13"]').remove();
    
            } else if (country == 'New Zealand') {
                var temp="171"; 
                $("#address-country").val(temp);
                $('#address-country option[value!="171"]').remove();
    
            } else if (country == 'United States') {
                var temp="233"; 
                $("#address-country").val(temp);
                $('#address-country option[value!="233"]').remove();
    
    
            } else if (country == 'Canada') {
                var temp="38"; 
                $("#address-country").val(temp);
                $('#address-country option[value!="38"]').remove();            
    
            } else {
                $('#address-country option[value="13"], #address-country option[value="171"], #address-country option[value="233"], #address-country option[value="38"]').remove();                        
    
            }
        });
    }
    setShippingCountry();
    

    この関数はユーザーの所在地/国を取得し、その国名を選択した値に設定しています。特定の国では選択されていないすべてのオプションが隠れています。その他の国ではAU、NZを除くすべての国が表示されます、米国、およびCA。今すぐ残っているのは、「States」選択オプションを取得してAU、US、およびCAのページの読み込みに追加するオプションです。そのため、ページロード時に既に選択されているため、ユーザーが国選択オプションをクリックする必要はありません。

    A couple of resources that helped me work out this solution so
    far:
    https://stackoverflow.com/questions/19611557/how-to-set-default-value-for-html-select

    and http://jsfiddle.net/9dgV5/2/

    ベストアンサー
    申し訳ありませんが、適切な答えはありません

    返信を残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です