Magento Konuma göre uygun yerelleştirmeyi görüntüleme


17

Magento sitesini kullanıcının varsayılan dilini ve konumunu tanıyacak ve siteyi bu dilde ve uygun yerelleştirmeyle görüntüleyecek şekilde yapılandırmak istiyorum.

Örneğin:

Rusya'dan varsayılan olarak Rusça olan bir kullanıcı, varsayılan para birimi ve fiyatlar olarak Rubles ile doğrudan Rus Dili web sitesine gidecektir.

Mümkün mü? Öyleyse nasıl?

Yanıtlar:


14

GeoIP ve Mağaza Görünümleri bu sorunu çözmenize yardımcı olacaktır.

GeoIP GeoIP veritabanınız için MaxMind gibi bir sağlayıcı kullanabilirsiniz (veya ülkeyi başlığa ekleyen bir web sunucusu modülü olarak yükleyebilirsiniz).

IP adresine bağlı olarak, müşteriyi uygun Mağaza Görünümü'ne yönlendirebilirsiniz (mağaza görünümü değiştiricisi tarafından oluşturulan bağlantıyı kontrol edin.

Mağaza Görünümleri

Rusça Mağaza Görünümü olmalıdır. Müşterileriniz için kullanmanız gereken bağlantıyı görmek için mağaza görünümü değiştiriciyi kontrol edin.

Yeniden yönlendirmeden sonra müşteriyi mağaza görünümü ile ilişkilendirmek için bir çerez ayarlayabilirsiniz.


Ayrıca, GeoIP'i, Ücretsiz Kargo mesajımız gibi şeyleri değiştirmek için sitede birkaç blok değiştirmek için kullandık
Adam Justice

1
Bu konuda dikkat edilmesi gereken 3 şey: (1) Ziyaretçi başka bir ülkede proxy kullanıyorsa veya IP uyuşmuyorsa, farklı bir web sitesine geçmek isteyebilir. Bunu mümkün kıl. (2) Yerelleştirme ve çeviri arasında ayrım yapın. Örneğin, çeviriler için yerelleştirme ve dil kabul başlıkları için GeoIP kullanın (Rusça / İngilizce dilli Rusça web sitesi, Almanca / İtalyanca / Fransızca dilli İsviçre Web sitesi). Aşağıdaki cevaba bakınız . (3) Rusya için farklı fiyatlarınız (veya farklı bir temel para biriminiz) varsa, bunun için özel bir web sitesi oluşturun.
Matthias Zeis

9

En son MaxMind veri dosyasını indiren ve düzenli olarak güncelleyen bir Magento GeoIP uzantısı (benim tarafımdan yazılmış) var.

controller_front_init_beforeEtkinliğe katılmanızı öneririm . Ziyaretçinin ülkesinin ISO 3166-1 kodunu almak için aşağıdaki kodu kullanabilir ve daha sonra, varsa, ilgili mağaza görünümüne yönlendirebilirsiniz:

$geoIP = Mage::getSingleton('geoip/country');
$code = $geoIP->getCountry();

/*
 * Check if store view for this country/language exists and it is not a current store view. 
 * If so do a redirect.
 * You can also take a language from user agent into consideration.
 */

Bu uzantıyı kullanma hakkında ayrıntılı makaleyi burada bulabilirsiniz .


5

Programlayabiliyorsanız http://www.thefutureoftheweb.com/blog/use-accept-language-header adresine bakın . index.phpMağaza görünümünün yüklenmesinde dile uygun bir anahtar yapabilirsiniz .


Dil evet, ama sorun sadece dil değil, aynı zamanda coğrafi konum.
Karlson

Geçiş yapmak için Maxmind coğrafi API'sini veya başka herhangi bir ücretsiz coğrafi hizmeti kullanabilirsiniz. Yüksek doğrulukları nedeniyle maxmind kullanıyorum ( maxmind.com/en/geolocation_landing )
Sander Mangel

Kullanıcı şu anda Rusya'daysa, ancak dili en-US ise ne yapmak istiyorsunuz? Yer genellikle Accept-Language'den daha az bilgilendirici (ve doğru).
kojiro

@kojiro Önce http kabul dili için giderdim. haklısın, yer bazı dil hakkında çok az şey söylüyor
Sander Mangel

1
Dikkatli olun, yalnız bağlantı zayıf bir cevap olarak kabul edilir, çünkü kendi başına anlamsızdır ve hedef kaynağın gelecekte hayatta olacağı garanti edilmez . Cevabın temel bölümlerini buraya dahil etmek ve referans için bağlantı sağlamak tercih edilir.
j0k

5

Bakılacak başka bir şey de GEO IP.

Birkaç kod satırı, kullanıcılara buna göre değiştirebileceğiniz ülke kodunu verecektir.

Ancak , ilk sayfa isabeti önbelleğe alındığı için Enterprise Edition ve Tam Sayfa Önbellek ile aynı mağazayı kullanıyorsanız, yeniden yönlendirme tabanlı kod kullanmada sorun yaşayacağınızı unutmayın .


Önbellekleme hakkında iyi bir nokta. Vary: Accept-LanguageHem tarayıcı hem de FPC için başlıkta nasıl yapılacağını anlamanız gerekir .
kojiro

FPC ile ilgili son notunuz hakkında bazı ayrıntılar eklemek ister misiniz? En azını söylemek gerekirse ilgimi çekti.
nevvermind

GEO IP kullanan ve kullanıcıyı ülke koduna göre doğru mağazaya yönlendiren bir modül kullanmayla ilgili bir sorun yaşadım. Bu başarısız oldu ve hata ayıklamadan sonra, sayfa FPC kullanılarak önbelleğe alındığında gözlemci asla çağrılmadı, FPC hiçbir magento kodu çalıştırmayan tam komut dosyasını önbelleğe aldığından, yalnızca bir gözlemci çağrıldı.
Jamie Teuma

Başka bir geliştirici, bir çalışma olarak index.php içinde bir komut dosyası inşa biliyorum, ama bu başarılı olup olmadığını emin değilim, bu yüzden YET yorum yapamam!
Jamie Teuma

4

Başka bir seçenek PHP'nin auto_prepend yapılandırmasını kullanmaktır . Bu, PHP tarafından işlenen tüm komut dosyalarının komut dosyasını istenen gerçek komut dosyası çalıştırmadan önce , ancak .htaccess'ten sonra çalıştırmasını sağlar (bunu kullanıyorsanız).

Bu yaklaşım diğer bazı önerilerle birleştirilir (örneğin, coğrafi konum verileri için MaxMind kullanılması ve belirli bölgeler için mağaza görünümleri) oldukça temiz bir yaklaşımla sonuçlanabilir.

Magento> = 1.4 sürümünü kullanıyorsanız, varsayılan mağaza kodu $ _SERVER ['MAGE_RUN_CODE'] değeri ayarlanarak yapılandırılabilir.

.Htaccess dosyasında veya apache'nin yapılandırmasında aşağıdakileri ekleyin:

php_value auto_prepend_file /var/www/mystore/path/to/script.php

Gözlerinde farklı script.phpgerekli iş mantığını gerçekleştirmek ve uygun mağaza kodunu ayarlayın:

<?php
if (get_ip_location($_SERVER['REMOTE_ADDR']) == 'uk') {
    $_SERVER['MAGE_RUN_CODE'] = 'store_code_uk';
} else {
    $_SERVER['MAGE_RUN_CODE'] = 'store_code_us';
}

Dikkat edilmesi gereken bir şey, bunun istenen tüm PHP dosyaları için geçerli olacağıdır, bu yüzden bunu aklınızda bulundurmanız gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.