2016-12-30 3 views
0

ストアのすべての(フロントエンド)ページにアクセスできるOpenCartモジュールを作成する方法はありますか? 私が望むのは、すべてのページに存在するために、このモジュールをすべてのレイアウトに「バインド」する必要がないことです。 基本的には、アプリケーションのすべてのページにいくつかのjsコードを注入するモジュールを作成し、バックエンドのいくつかのOpenCartフックに応じて、バックエンドのいくつかの追加のjsコードまたはバックエンドのいくつかのapiリクエストを実行します。 ありがとうopencartモジュールのすべてのフロントエンドページにアクセスするにはどうすればよいですか?

+0

vQmodまたはocmodを使用してフッターまたはヘッダーを修正しようとしましたか? – DigitCart

答えて

0

モジュールがストアのすべての(フロントエンド)ページにアクセスできるようにすることで、正確にはわかりません。モジュールはレイアウトに配置する必要があり、レイアウトは複数のページに割り当てることができます。

各レイアウトには、指定できる領域(およびカスタマイズ可能な領域)に特別に割り当てられた要素を含めることができます。たとえば、共通ヘッダーにモジュール用の特別な場所を作成することができます。コントローラ、言語、およびビューファイルを自分の指定したフォルダに作成するだけです(私の例では、共通フォルダを使用します)。これらのファイルを "loadjs"と呼ぶことにします。

これらはcommon/header.php.tplのファイルの後にパターンします。それに合わせて、コントローラファイル内のクラス名とファイル名を必ず変更してください。したがって、クラスを含むコントローラフォルダの共通ディレクトリにloadjs.phpファイルを作成し、language/(your language)/commonフォルダにloadjs.phpファイル、view/theme/(your theme name)/template/commonフォルダにloadjs.tplファイルを作成します。

ファイルに$data['loadjs'] = $this->load->controller('common/loadjs');を追加し、view/theme/(your theme name)/template/common/header.tplファイルに<?php echo $loadjs; ?>を追加してください。これで、モジュールを作成できます。

ただし、レイアウトに追加するには、いくつかの管理ファイルを変更する必要があります。 Add $_['text_loadjs'] = 'Loadjs';admin/language/(your language)/design/layout.phpに、$data['text_loadjs'] = $this->language->get('text_loadjs');admin/controller/design/layout.phpにそれぞれ設定してください。

admin/view/template/design/layout_form.tplファイルにも変更を加える必要があります。次のコードを探します:

<option value="content_top" selected="selected"><?php echo $text_content_top; ?></option> 
<?php } else { ?> 
<option value="content_top"><?php echo $text_content_top; ?></option> 
<?php } ?> 
<?php if ($layout_module['position'] == 'content_bottom') { ?> 
<option value="content_bottom" selected="selected"><?php echo $text_content_bottom; ?></option> 
<?php } else { ?> 
<option value="content_bottom"><?php echo $text_content_bottom; ?></option> 
<?php } ?> 

、ちょうどその下に次のコードを追加します。今

<?php if ($layout_module['position'] == 'loadjs') { ?> 
<option value="loadjs" selected="selected"><?php echo $text_loadjs; ?></option> 
<?php } else { ?> 
<option value="loadjs"><?php echo $text_loadjs; ?></option> 
<?php } ?> 

を、あなたのOpenCartダッシュボードにログインし、レイアウト上のloadjs位置にあなたのモジュールを追加します。そして、それはそれを行う必要があります。

+0

あなたのコメントをいただきありがとうございます。私が望むのは、テーマに関係なく、ユーザーがファイルを編集することなく、ヘッダーにjavascriptを追加することです。それは可能ですか? – paptom

+0

これでモジュールを追加する必要はありません。私はあなたの元のリクエストから、サイトの「すべての」フロントエンドページにアクセスすることを前提としています。各ページに同じjavascriptを入れたいと思っています。もしあなたが望むだけで、あなたのすべてのページが同じビュー/テーマ/(テーマ名またはデフォルト)/template/common/header.tplファイルを共有しているなら、ヘッダに直接javascriptを追加するだけです少なくともこれはもっとも単純で直接的な方法です)。他の方法もありますが、それらはますます複雑になります。 – JasonF

+0

デフォルトのheader.tplファイルを使用している場合は、選択したテーマに関係なく、javascriptを1回追加するだけで済みます。各テーマでカスタマイズされたheader.tplファイルを使用する場合は、各テーマheader.tplファイルにjavascriptを追加する必要があります。 – JasonF

関連する問題