我正在使用opencart 1.5.5.1版。我们有一个使用opencart框架编码的网站。该网站还使用opencart多商店功能。我根据How to use separate language files for opencart multi stores?中给出的商店添加了语言标签的翻译。
现在的问题是,是否可以在管理员端为不同的用户使用不同的语言标签,具体取决于他们创建用户帐户的商店。例如:一个用户从商店创建与体育项目相关的用户帐户,另一个用户从商店创建与手表相关的用户帐户。因此,当“体育”用户登录(管理员方面)时,我们需要显示与体育项目相关的语言标签,当“手表”用户登录(管理员方面)时,我们需要显示与手表相关的语言标签。
注意:新用户不是超级管理员。
请帮帮我。提前谢谢!
答案 0 :(得分:2)
这里的问题有点复杂 - 你必须抓住用户注册的网站。
打开您的phpMyAdmin(或您想要的数据库管理工具)并通过添加新列来编辑customer
表格,例如例如register_site
类型VARCHAR(20)
。您可以将寄存器保存到此新列。
这意味着分别向商店正在使用的模板添加<input type="hidden" name="register_site" value="sports" />
或<input type="hidden" name="register_site" value="watches" />
。您将编辑两个模板文件:
/catalog/view/theme/<THEME>/template/account/register.tpl
/catalog/view/theme/<THEME>/template/checkout/register.tpl
您可以在其中添加提及的隐藏输入(每个商店只有一个,适用于真实主题名称的<THEME>
)和此模型文件:
/catalog/model/account/customer.php
您必须通过向addCustomer
SQL添加新的coulmn-value对来编辑 insert
方法(应该是第14行):
$this->db->query("INSERT INTO " . DB_PREFIX . "customer SET store_id = '" . (int)$this->config->get('config_store_id') . "', firstname = '" . $this->db->escape($data['firstname']) . "', lastname = '" . $this->db->escape($data['lastname']) . "', email = '" . $this->db->escape($data['email']) . "', telephone = '" . $this->db->escape($data['telephone']) . "', fax = '" . $this->db->escape($data['fax']) . "', salt = '" . $this->db->escape($salt = substr(md5(uniqid(rand(), true)), 0, 9)) . "', password = '" . $this->db->escape(sha1($salt . sha1($salt . sha1($data['password'])))) . "', newsletter = '" . (isset($data['newsletter']) ? (int)$data['newsletter'] : 0) . "', customer_group_id = '" . (int)$customer_group_id . "', ip = '" . $this->db->escape($this->request->server['REMOTE_ADDR']) . "', status = '1', approved = '" . (int)!$customer_group_info['approval'] . "', date_added = NOW(), register_site = '" . $this->db->escape($data['register_site']) . "'");
^^^^^^^^^^^^^ --------- THIS IS NEWLY ADDED ---------- ^^^^^^^^^^^^^^
(检查线的末尾......)。
现在在管理员中您可以在登录的客户数组中检查新的register_site
属性/索引,并使网站的行为相应(现在应该很简单......)。