我将要上线一个 Magento 网站,并且客户已经提出了最后一分钟的请求。他们是一家英国制造商,他们不想与他们的全球供应链竞争,所以他们想要;
- 拥有来自北美的 IP 的所有用户都会被重定向到一个完全不同的网站(非 Magento,与我无关),理想情况下会使用重定向消息。
- 拥有来自北美、英国和爱尔兰以外任何地方的 IP 的所有用户都可以看到该网站,但定价和购物车被禁用,因此他们看不到价格并且无法进行购买
- 英国和爱尔兰正常运作。
我正在尝试找出解决此问题的最佳方法。我知道三个选项;
- .HTACCESS
我曾在一家商店工作过,之前开发人员在 .htaccess 中设置了大量的 IP 列表(主要是为了安全而阻止中国和俄罗斯)。我可以做类似的事情,用美国 IP 重定向用户,然后可能像这样设置一个环境变量;
可以在模板中访问它以不显示添加到购物车和价格标记。
优点:相对容易
缺点:可怕。IP 列表将被硬编码,显示/不显示价格等的条件代码将基于模板,而不是通过模块完成。此外,无法以这种方式处理“您正在转移到我们的美国商店”请求。
- 使用商业模块的商店切换
另一种选择可能是自定义/配置以下商业模块来处理请求;
http://www.mageworx.com/store-and-currency-auto-switcher-magento-extension.html
我认为这将涉及建立新网站而不是新商店(因为当前安装已经有 1 个网站和 2 个商店,每个商店都有一个商店视图。)。新网站将有自己的主题,不显示购物车/价格信息。
优点: IP 没有硬编码,使用 MaxMind GeoIP 数据库。基于模块。
缺点:同样,是否显示价格的代码是基于模板的。此外,这会给用户增加很多管理开销——额外的网站、额外的商店视图使事情变得复杂。并且没有使用该模块 99% 的功能。
- 一个自定义模块来处理它
我知道这是理想的解决方案,但我在应用程序/设计中比在应用程序/代码中更快乐。我知道如何构建一个模块,并且以前构建过非常小的模块,但是.... 基于 Alan Storm 的博客文章here;
http://magento-quickies.tumblr.com/post/32402056167/magento-startup-events
我想象我会使用该controller_front_init_before
事件并创建一个观察者,它扩展与产品视图模板中使用的 isSaleable() 方法相关的一个或多个类。可能吗??
优点: 这是正确的方法。没有管理开销。易于禁用/启用。
任何关于此的建议、指针或链接都会有很大帮助。谢谢。