2011-07-07 8 views
1

私はカスタムマイクロサイトを提供するcodeigniterアプリケーションを構築しています。基本的に、各マイクロサイトは、1つのコントローラのメソッドによってロードされた7つの異なるビューのコレクションになります。それぞれのマイクロサイトには、これらのビューファイル(および関連するCSS、js、およびイメージファイル)の異なるバージョンを含む異なるフォルダが存在し、コントローラーは、マイクロサイトごとにデータベースに格納された情報に基づいてロードするビューのフォルダを知ります記録。カスタムマイクロサイトを提供するcodeigniterアプリケーションの作成に関するアドバイス

このアプローチの問題は、1つのマイクロサイトが他のすべてのマイクロサイトからユニークなカスタムページを持つ必要がある場合です。それらはすべて1つのコントローラによって制御されるため、すべてのマイクロサイトでこのページをサポートする必要があるという制限があります。私はこれらのURLを想像することは言及していますかを説明futherする

:これらのリンクの両方のコントローラで

http://www.fakewebsite.com/index.php/microsite/index/david_site 
http://www.fakewebsite.com/index.php/microsite/index/frank_site 

は「マイクロサイト」で、メソッドがある「インデックス」 「インデックス」とは何テンプレートに知っています上の例では 'david_site'または 'frank_site'のいずれかの最初の引数に基づいて戻ります。

+0

あなたの質問は何ですか?私があなたが育てる唯一の問題は、「すべてのマイクロサイトがこのページをサポートする必要があるという制限にぶつかります」ということです。何かがあなたにトラブルを与えているなら、それは何ですか? –

答えて

1

これはCodeIgniterの持つ可能であるならば、私が言うことはできませんが、私は仮定so:

だからあなたの問題は何ですか?コントローラーにコードが多すぎますか?コントローラからモデルにコードを移動します。その後、コードはより再利用可能で、とにかく共有されている脂肪モデルを使用して各マイクロサイト上に小さなコントローラを持つことができます。

これまでのところ本当に良い音ではありませんか?それでも各サイトにコントローラが1つあります。さて、各マイクロサイトのコントローラをベースコントローラから拡張するようにしてください。したがって、すべてのコードはまだ1か所にありますが、一部のコントローラメソッドでは、ベースコントローラをサイト単位で拡張できます。

フロントエンドコントローラーは、テーマごとに正しいコントローラークラスを提供します。私はあなたの質問を正しく理解しています。

1

ほとんどのあなたのマイクロサイトに対応するデフォルトの「テーマ」をコントローラーに付けることができますか?次に、カスタムテーマを作成する必要がある場合は変更できますか?したがって、この

http://www.fakewebsite.com/microsite/david_site/ <よう

- デフォルトのテーマ http://www.fakewebsite.com/microsite/frank_site/ < - デフォルトのテーマ http://www.fakewebsite.com/microsite/john_site/customtheme/ < - カスタムテーマ

1

私はこの質問を理解しているので、特定の「マイクロサイト」だけに異なるビューファイルを読み込む方法を尋ねていますが、すべて同じコントローラとコードベースを使用しています。

viewsディレクトリには、デフォルトのテーマ用のディレクトリが1つあります。次に、カスタムの作業を行う「マイクロサイト」ごとに、一意のファイルを含む別のディレクトリを作成してからファイルを読み込みます。ユニークなものがまずあります。

デフォルトファイルを想定している性急な例がviews/のルートにあります。

// I assume we know which site we're loading 
$theme = 'david_site'; 

// Whatever the current view's name should be 
$view = 'page3'; 

// Path to our custom file if it exists 
$custom = APPPATH.'views/'.$theme.'/'.$view; 

// Does a custom view exist? 
if (file_exists($custom)) 
{ 
    $view_file = $theme.'/'.$view; 
} 
else 
{ 
    // Use the default 
    $view_file = $view; 
} 
$this->load->view($view_file); 

は、私の知る限りでは、CIでview_file_exists()のようなものは何もありませんので、我々はちょうどフルパスで、昔ながらのfile_exists()を使用しています。

これは当然のことながら関数を書く価値はありますが、うまくいけばこれが役に立ちます。ライブラリ、モデルなどのロードにも適用できます。また、Loaderクラスを拡張して自動的に実行することもできます(おそらく過剰な)。

CI2は既にこの機能のバージョンをENVIRONMENT定数に持っていますが、この使用法は意図していませんが、基本的にはそれが行います。

+0

おかげさまで@Wesley Murchは、基本的に何が起こっているのかは、特定のタイプのマイクロサイトを作り出し、それぞれがカスタムテーマにできるバックエンドシステムを構築しようとしていることです。 –

関連する問題