Magento การแสดงที่เหมาะสมตามสถานที่ตั้ง


17

ฉันต้องการกำหนดค่าไซต์วีโอไอพีเพื่อให้สามารถรับรู้ภาษาเริ่มต้นและตำแหน่งของผู้ใช้และแสดงเว็บไซต์ในภาษานั้นและการแปลที่เหมาะสม

ตัวอย่างเช่น:

ผู้ใช้จากรัสเซียที่ใช้ภาษารัสเซียเป็นค่าเริ่มต้นจะไปที่เว็บไซต์ภาษารัสเซียที่มีรูเบิลเป็นสกุลเงินและราคาเริ่มต้นโดยตรง

เป็นไปได้ไหม ถ้าเป็นเช่นนั้นได้อย่างไร

คำตอบ:


14

GeoIP และ Store Views จะช่วยคุณแก้ปัญหานี้

GeoIP คุณสามารถใช้ผู้ให้บริการเช่นMaxMindสำหรับฐานข้อมูล GeoIP ของคุณ (หรือโหลดเป็นโมดูลเว็บเซิร์ฟเวอร์ที่เพิ่มประเทศในส่วนหัว)

จากที่อยู่ IP คุณสามารถเปลี่ยนเส้นทางลูกค้าไปยังมุมมองร้านค้าที่เหมาะสม (ตรวจสอบลิงค์ที่สร้างโดยตัวสลับมุมมองร้านค้า

มุมมองร้านค้า

รัสเซียควรเป็น Store View ตรวจสอบตัวสลับมุมมองร้านค้าเพื่อดูลิงก์ที่คุณต้องใช้สำหรับลูกค้าของคุณ

หลังจากเปลี่ยนเส้นทางคุณสามารถตั้งค่าคุกกี้เพื่อเชื่อมโยงลูกค้ากับมุมมองร้านค้า


นอกจากนี้เรายังใช้ GeoIP เพื่อสลับบล็อกบางส่วนในเว็บไซต์เพื่อเปลี่ยนแปลงสิ่งต่างๆเช่นข้อความจัดส่งฟรีของเรา
Adam Justice

1
3 สิ่งที่ต้องระวังในหัวข้อนี้: (1) หากผู้เข้าชมใช้พร็อกซีในประเทศอื่นหรือ IP ไม่ตรงกันเขาอาจต้องการเปลี่ยนไปใช้เว็บไซต์อื่นด้วยตนเอง ทำให้เป็นไปได้ (2) ความแตกต่างระหว่างการแปลและการแปล เช่นใช้ GeoIP สำหรับการแปลและส่วนหัวการยอมรับภาษาสำหรับการแปล (เว็บไซต์รัสเซียกับภาษารัสเซีย / อังกฤษ, เว็บไซต์สวิสที่มีภาษาเยอรมัน / อิตาลี / ฝรั่งเศส) ดูคำตอบด้านล่าง (3) หากคุณมีราคาแตกต่างกัน (หรือสกุลเงินฐานที่แตกต่างกัน) สำหรับรัสเซียให้สร้างเว็บไซต์เฉพาะสำหรับมัน
Matthias Zeis

9

มีนามสกุลวีโอไอพี GeoIP (เขียนโดยฉัน) ซึ่งดาวน์โหลดไฟล์ข้อมูล MaxMind ล่าสุดและอัปเดตเป็นระยะ

ฉันขอแนะนำให้เข้าcontroller_front_init_beforeร่วมกิจกรรม คุณสามารถใช้รหัสต่อไปนี้เพื่อตรวจสอบรับรหัส ISO 3166-1 ของประเทศของผู้เข้าชมจากนั้นเปลี่ยนเส้นทางเขาไปยังมุมมองร้านค้าที่สอดคล้องหากคุณมี

$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.
 */

บทความรายละเอียดเกี่ยวกับการใช้ส่วนขยายนี้สามารถพบได้ที่นี่


5

ลองดูที่http://www.thefutureoftheweb.com/blog/use-accept-language-header หากคุณสามารถตั้งโปรแกรม คุณสามารถทำการสลับในการindex.phpโหลดมุมมองร้านค้าที่เหมาะสมสำหรับภาษา


ภาษาใช่ แต่ปัญหาไม่ได้เป็นเพียงภาษา แต่รวมถึงที่ตั้งทางภูมิศาสตร์ด้วย
Karlson

คุณสามารถใช้ Maxmind geo API หรือบริการทางภูมิศาสตร์ฟรีอื่น ๆ เพื่อทำการสลับ ฉันใช้ maxmind เพราะความแม่นยำสูง ( maxmind.com/th/geolocation_landing )
Sander Mangel

คุณต้องการทำอย่างไรถ้าผู้ใช้อยู่ในรัสเซีย แต่ภาษาของเขาคือ en-US สถานที่ตั้งมักจะให้ข้อมูลน้อยลง (และแม่นยำ) กว่ายอมรับภาษา
kojiro

@kojiro ฉันจะใช้ภาษาที่ยอมรับ http ก่อน คุณพูดถูกแล้วสถานที่พูดถึงภาษาของใครบางคน
Sander Mangel

1
ระวังการเชื่อมโยงคนเดียวจะถือว่าเป็นคำตอบที่น่าสงสารเพราะมันมีความหมายด้วยตัวเองและทรัพยากรเป้าหมายไม่รับประกันว่าจะมีชีวิตอยู่ต่อไปในอนาคต มันจะดีกว่าที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
j0k

5

อีกสิ่งที่ควรพิจารณาคือ GEO IP

บรรทัดของรหัสสองสามบรรทัดจะให้รหัสประเทศแก่ผู้ใช้ซึ่งคุณสามารถสลับตามรหัสนั้นได้

แต่ทราบว่าคุณจะมีปัญหาในการใช้รหัสใด ๆ เปลี่ยนเส้นทางตามถ้าคุณกำลังใช้ร้านเดียวกับ Enterprise Edition และ Cache เต็มหน้าเป็นตีหน้าแรกจะเก็บไว้ชั่วคราว


ข้อดีของการแคช คุณต้องหาวิธีVary: Accept-Languageในส่วนหัวของทั้งเบราว์เซอร์และ FPC
kojiro

ต้องการเพิ่มรายละเอียดเกี่ยวกับบันทึกย่อล่าสุดของคุณเกี่ยวกับ FPC หรือไม่ ฉันสนใจที่จะพูดน้อย
nevvermind

ฉันมีปัญหากับการใช้โมดูลที่ใช้ GEO IP และเปลี่ยนเส้นทางผู้ใช้ไปยังร้านค้าที่ถูกต้องตามรหัสประเทศ สิ่งนี้ล้มเหลวและหลังจากการดีบักผู้สังเกตการณ์ไม่เคยถูกเรียกเมื่อเพจถูกแคชโดยใช้ FPC โดยมีผู้เรียกเพียงคนเดียวที่ถูกเรียกใช้เนื่องจาก FPC แคชสคริปต์แบบเต็มที่รันไม่มีโค้ดวีโอไอพี
เจมี่ Teuma

ฉันรู้ว่านักพัฒนาคนอื่นกำลังสร้างสคริปต์ภายใน index.php เพื่อทำงาน แต่ไม่แน่ใจว่าสิ่งนี้ประสบความสำเร็จหรือไม่ดังนั้นจึงไม่สามารถแสดงความคิดเห็นได้ YET !!
Jamie Teuma

4

อีกตัวเลือกหนึ่งคือการใช้การกำหนดค่าauto_prependของ PHP สิ่งนี้จะทำให้สคริปต์ทั้งหมดที่จัดการโดย PHP เรียกใช้สคริปต์ก่อนที่สคริปต์ที่ร้องขอจริงจะทำงาน แต่หลังจาก. htaccess (หากคุณใช้งาน)

วิธีนี้รวมกับคำแนะนำอื่น ๆ (เช่นการใช้ MaxMind สำหรับข้อมูลตำแหน่งทางภูมิศาสตร์และมุมมองร้านค้าสำหรับภูมิภาคเฉพาะ) อาจส่งผลให้วิธีการที่ค่อนข้างสะอาด

หากคุณใช้ Magento รุ่น> = 1.4 คุณสามารถกำหนดค่ารหัสร้านค้าเริ่มต้นได้ด้วยการตั้งค่า $ _SERVER ['MAGE_RUN_CODE']

ในไฟล์. htaccess หรือการกำหนดค่าของ apache ให้เพิ่มรายการต่อไปนี้:

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

ในscript.phpการดำเนินการตรรกะทางธุรกิจที่จำเป็นและตั้งรหัสร้านค้าที่เหมาะสม:

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

สิ่งหนึ่งที่ควรทราบก็คือว่าเรื่องนี้จะนำไปใช้สำหรับทุกไฟล์ PHP ร้องขอเพื่อให้คุณจะต้องเก็บที่ในใจ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.