2017-10-23 1 views
0

私はインデックス(モデルビューとコントローラ)のモジュールを持っているとしましょう。
インデックスページで、ハイチャートを使用したいと思います。
これを行う最も簡単な方法は、テンプレートにhighchart.jsを組み込むことです。

しかし、他のページにhighchart.jsを含めたくない場合はどうすればいいですか?

テンプレートにすべてのプラグインを含めると無駄になり、読み込みに時間がかかることがあります。 Codeigniter 3には、必要な場合にのみプラグインを読み込む方法はありますか?Codeigniter 3で必要なときに自動的にプラグインを呼び出す方法は?

+1

私は数年前のコードを含むソリューションを提案するのは好きではありませんが、github codeigniterテンプレートやgithub自体( "codeigniter template")などのものを検索し、君は。 – Tpojka

答えて

1

これは、あなたがロードする必要があるプラグインのページを完全にあなたのハンドルです。 js、cssを動的に含めることができます。 jsやcssに含めるべきすべてのビューページを静的に記述するか、コントローラに渡すことができます。

ここに参考文献があります。それに役立つことを願っています:
1)Codeigniter - how to include a dynamic javascript file in a view
2)how to load css, js dynamically in codeigniter

0

まず分類プラグインが必要なプラグインの数として3(またはそれ以上)のカテゴリーに含める: -

1)は、多くの場合、使用(60に含まほとんど使用され(20から60パーセントのページに含まれていない-100%ページ)

2))

3)回または以下2-5ページ

最初の2つのカテゴリに別々のテンプレートを作成します。&は、必要な場所を含みます。最後のタイプについては

は、JSファイルをロードするための機能を追加するには、テンプレートライブラリでは、個別に

0

含まれます:あなたのコントローラに

$this->template->set_js('js-file', base_url() .'assets/vendor/js-file/js-file.min.js'); 

public function set_js($name, $src) 
    { 
     $src = htmlspecialchars(strip_tags($src)); 
     $this->_js[$name] = '<script src="'.$src.'"></script>'; 
     return $this; 
    } 

はとして使用されるように。あなたは、私はHMVCを使用していますし、私はMY_Controllerとして私自身のコアコントローラを作成し、このクラスの下で私はプラグインを取得するための関数を書く最後に

<?php print $template['js']; ?> 
0

を追加することができます。レイアウトで

スイッチケース。

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class MY_Controller extends MX_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
     $this->load->module("Template"); 
    } 

    public function include($plugin) 
    { 
     switch ($plugin) { 
      case 'highcharts': 
       return "global/plugins/js/highcharts.js"; 
       break; 
     } 
    } 
} 

、その後、私のモジュールコントローラでIは、コアコントローラを拡張して、私は1つの以上のプラグインを持っているので、もし私が配列にそれらを含めることができる配列にそれを置きます。

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class Ookla extends MY_Controller { 
    public function index() 
    { 
     $data["js"] = [ 
          $this->include('highcharts') // <- here 
         ]; 
     $data["main_content"] = "ookla/ookla"; 
     $this->template->master_template($data); 
    } 
} 

、その後、私のmaster_templateビューIループで、それであれば、アレイ内のプラグインを持っているよう。

... 
    <?php 
      if(isset($js)){ 
       foreach ($js as $item) { 
        echo "<script type='text/javascript' src='".base_url()."assets/".$item."'></script>"; 
       } 
      } 
     ?> 
    </body> 

</html> 

洞察力をお寄せいただきありがとうございます。

関連する問題