有没有php代码来更改存储?因此,例如,如果php检测到该语言是西班牙语,我希望它将整个商店更改为其他商店。
因此,例如,当语言更改时,可以随时使用它 - 然后商店也会更改。 因此,例如,如果有人用英语查看 store1 并将语言更改为西班牙语,则 store1 也会自动更改为使用该语言的 store2。知道吗?
如果您打开file:index.php或startup.php(基于您使用的OpenCart版本(,您将看到有一个代码可以检查用户访问过的URL,然后搜索数据库以查看它是默认存储(store_id = 0(还是其他存储。如果它是默认存储,则不会发生任何更改。如果不是,则会话变量 (store_id( 将更改为指定的store_id,整个 opencart 将基于此store_id运行。
OpenCart 1.5.x索引.php
// Store
if (isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1'))) {
$store_query = $db->query("SELECT * FROM " . DB_PREFIX . "store WHERE REPLACE(`ssl`, 'www.', '') = '" . $db->escape('https://' . str_replace('www.', '', $_SERVER['HTTP_HOST']) . rtrim(dirname($_SERVER['PHP_SELF']), '/.\') . '/') . "'");
} else {
$store_query = $db->query("SELECT * FROM " . DB_PREFIX . "store WHERE REPLACE(`url`, 'www.', '') = '" . $db->escape('http://' . str_replace('www.', '', $_SERVER['HTTP_HOST']) . rtrim(dirname($_SERVER['PHP_SELF']), '/.\') . '/') . "'");
}
if ($store_query->num_rows) {
$config->set('config_store_id', $store_query->row['store_id']);
} else {
$config->set('config_store_id', 0);
}
OpenCart 2.x/3.x- 目录/控制器/启动/启动.php
// Store
if ($this->request->server['HTTPS']) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "store WHERE REPLACE(`ssl`, 'www.', '') = '" . $this->db->escape('https://' . str_replace('www.', '', $_SERVER['HTTP_HOST']) . rtrim(dirname($_SERVER['PHP_SELF']), '/.\') . '/') . "'");
} else {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "store WHERE REPLACE(`url`, 'www.', '') = '" . $this->db->escape('http://' . str_replace('www.', '', $_SERVER['HTTP_HOST']) . rtrim(dirname($_SERVER['PHP_SELF']), '/.\') . '/') . "'");
}
if (isset($this->request->get['store_id'])) {
$this->config->set('config_store_id', (int)$this->request->get['store_id']);
} else if ($query->num_rows) {
$this->config->set('config_store_id', $query->row['store_id']);
} else {
$this->config->set('config_store_id', 0);
}
因此,您可以扩展此代码,您将检查浏览器的语言,并根据每种语言将store_id更改为所需的语言。
示例代码如下,它不是理想的,但它会让您了解如何自己实现它。
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
switch ($lang){
case "fr":
$this->config->set('config_store_id', 1);
break;
case "it":
$this->config->set('config_store_id', 2);
break;
case "en":
$this->config->set('config_store_id', 3);
break;
case "el":
$this->config->set('config_store_id', 4);
break;
default:
//else default store
$this->config->set('config_store_id', 0);
break;
}
希望上面的答案对您有所帮助。这很容易,但您需要了解OpenCart的工作原理。另外,只是我的建议......"不要等待现成的扩展,尝试制作你的;)扩展。
干杯!