1

opencart バージョン 1.5.5.1 を使用しています。opencart フレームワークを使用してコーディングされた Web サイトがあります。このサイトでは、opencart マルチストア機能も使用しています。Opencart マルチストアに個別の言語ファイルを使用する方法に記載されているように、ストアに応じて言語ラベルの翻訳を追加しました。.

問題は、ユーザー アカウントを作成したストアに応じて、ユーザーごとに管理者側で異なる言語ラベルを使用できるかどうかです。例: 1 人のユーザーがスポーツ アイテムに関連するストアからユーザー アカウントを作成し、別のユーザーが腕時計に関連するストアからユーザー アカウントを作成します。そのため、「スポーツ」ユーザーがログインするとき (管理者側) は、スポーツ アイテムに関連する言語ラベルを表示する必要があり、「腕時計」ユーザーがログインするとき (管理者側) は、時計に関連する言語ラベルを表示する必要があります。

注: 新しいユーザーはスーパー管理者ではありません。

私を助けてください。前もって感謝します!

4

1 に答える 1

2

ここでの問題はもう少し複雑です。ユーザーが登録しているサイトをキャッチする必要があります。

phpMyAdmin (または目的の DB 管理ツール) を開き、新しい列 (例: など) を追加してテーブルを編集しcustomerます。レジスターのサイトをこの新しい列に保存します。register_siteVARCHAR(20)

これは、ストアが使用しているテンプレートに<input type="hidden" name="register_site" value="sports" />またはをそれぞれ追加することを意味します。<input type="hidden" name="register_site" value="watches" />次の 2 つのテンプレート ファイルを編集します。

  • /catalog/view/theme/<THEME>/template/account/register.tpl
  • /catalog/view/theme/<THEME>/template/checkout/register.tpl

ここで、前述の非表示の入力(ストアごとに 1 つの adequote のみ<THEME>、実際のテーマ名に切り替えます) とこのモデル ファイルを追加します。

  • /catalog/model/account/customer.php

addCustomerここで、新しい coulmn-value ペアを SQL に追加してメソッドを編集する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プロパティ/インデックスを確認し、それに応じてサイトを動作させることができます (これは簡単なはずです...)。

于 2013-04-23T08:54:45.180 に答える