【问题标题】:How to add translation in opencart admin section depending on user?如何根据用户在 opencart 管理部分添加翻译?
【发布时间】:2013-04-23 08:01:56
【问题描述】:

我正在使用 opencart 版本 1.5.5.1。我们有一个使用 opencart 框架编码的网站。该站点还使用 opencart 多商店功能。我已经根据How to use separate language files for opencart multi stores? 中给出的商店添加了语言标签的翻译。

现在的问题是,是否可以在管理员端为不同的用户使用不同的语言标签,具体取决于他们创建用户帐户的商店。例如:一个用户从与运动项目相关的商店创建用户帐户,而另一用户从与手表相关的商店创建用户帐户。因此,当“运动”用户登录(管理员端)时,我们需要显示与运动项目相关的语言标签,而当“手表”用户登录(管理员端)时,我们需要显示与手表相关的语言标签。

注意:新用户不是超级管理员。

请帮助我。提前致谢!

【问题讨论】:

    标签: php opencart shopping-cart


    【解决方案1】:

    这里的问题有点复杂 - 你必须抓住用户注册的网站。

    打开您的 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

    您在哪里添加提到的隐藏输入(每个商店只有一个 adequote,将 <THEME> 切换为真实主题名称)和此模型文件:

    • /catalog/model/account/customer.php

    您必须编辑 addCustomer 方法,将新的列值对添加到insert SQL(应该是第 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 属性/索引,并让网站做出相应的行为(现在应该很简单......)。

    【讨论】:

    • 只是为了补充Shadyyx的答案。完成上述操作后,请查看 admin/index.php 中的第 124 行。我相信这是为整个管理员设置配置语言的位置。
    • 感谢您的回复。我已经有了用户 storeid。默认情况下,opencart 有什么方法可以在管理部分提供翻译?
    • 目前我的解决方案是在标头控制器中定义一个常量。根据用户的 storeid - 更改该常量的值并在“SPORTS”和“WATCHES”的语言文件中使用它!但我更喜欢这样的解决方案:How to use separate language files for opencart multi stores?
    • @SankarV 那么问题出在哪里呢?编辑控制器文件并添加满足您需求的代码 :-) 或者使用导致您出现问题的代码更新问题(或者更好地解释问题,因为我不太确定您现在想从我这里得到什么...... .).
    • 很抱歉给您带来了困惑。在前端,我们可以使用为商店提供的语言。是否有任何此类选项可用于设置管理语言,以便我可以创建和使用以下语言部分:English_sports、English_watches 等。
    猜你喜欢
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多