Magento存储具有多个货币和语言的子域的视图


Magento store views with sub domains with multiple currencies and languages

在写这篇文章之前,我做了很多研究和测试,在SO和其他博客上读了很多帖子,但都没有解决我的问题。我正在开发一个网站与magento1.9.2.1。它将有两种语言英语和阿拉伯语,以及七种货币美元、SAR、QAR等。假设域名是altaf.com;)。

要求:

  1. 网站默认语言为阿拉伯语,默认货币为SAR。因此,默认url将为ar sa.altaf.com,其中ar表示语言,sa代表货币
  2. 类似地,en-sa.altaf.com将显示使用SAR货币的英文网站。此外,ar-us.altaf.com将用于阿拉伯语内容和美元,因此en-us.altaf.com用于英语内容,美元等用于其他货币

如何做到这一点

一种方法如下:

  1. 为每个子url创建商店视图。因此,我们将有7*2=14个商店视图(根据货币*语言),并在web部分为每个商店视图设置url。此外,在"货币设置"部分为每个商店视图选择适当的默认货币
  2. 在创建英语内容时,请选择所有将显示英语内容的商店视图,而对于阿拉伯语内容,请选择将显示阿拉伯语内容的所有商店视图

上述问题:

  1. 我们有数千种产品,大约20个类别和其他大量内容,用这种方式很难管理。

  2. 在输入数据时,我们很可能会错过为每个内容选择大约7个商店视图。此外,为产品输入数据将更加困难。

  3. 还会出现更多的问题。。。

我做得怎么样

  1. 我创建了商店视图,并为每个视图设置了适当的url。目前,我只为en-sa.altaf.com、ar-sa.altaf.com、en-us.altafcom、ar-us.altaf.com 创建了4个商店视图

  2. 为每个商店的URL创建子文件夹,如en-sa、en-us、ar-sa和ar-us,并在其中放置index.php,并相应地将路径更改为Mage.php。对每个域的nginx配置文件进行了适当的更改,并设置了适当的根路径。对它们进行了测试,并确认每个子文件夹index.php都已执行。

  3. 现在,我正在尝试为每个具有en的url加载英语内容,并为每个具有ar。通过这种方式,管理所有内容将很容易。我在所有放在en-xx子文件夹中的index.php文件中使用MAGE_RUN_CODE作为en-,类似地,对于ar-xx子文件夹使用ar。我还尝试将en-us.altaf.com和ar-us.altaf.com的商店和货币设置如下,它们将以美元为货币。

Mage::app()->setCurrentStore('en'); //for en Mage::app()->getStore()->setCurrentCurrency('usd'); //Set currency for store

Mage::app()->setCurrentStore('ar'); //for ar
Mage::app()->getStore()->setCurrentCurrency('usd'); 

但它不起作用,这是我的大问题。

有人能帮我解决这个问题吗?或者给我其他更好解决方案的细节?如果答案正确,我将获得50分的奖励,以解决我的问题:)。

如果你想用这种方式,你应该在php函数的名称处添加"代码",以编程方式设置货币:

Mage::app()->getStore()->setCurrentCurrencyCode('USD'); 

代替

Mage::app()->getStore()->setCurrentCurrency('USD');

但我不认为这是最好的方式。我会创建两个网站,阿拉伯语和英语,然后为每种货币添加商店视图。每个网站都应该使用相同的根目录。然后在Magento后端为每个商店视图设置url、语言和货币。

添加新产品时,您只需插入两种语言的内容,并选中"目录"->"管理产品"->"产品信息"->"网站"中的两个复选框。

货币将自动应用于每个商店视图。