CodeIgniterで静的ページを作成。テンプレートを増やすだけでページ増設。

 

CodeIgniterで静的なページを作成する方法を紹介します。

CodeIgniterのようなフレームワークでは、ページを作成する際にControllerを増やしていくのが前提となります。CodeIgniterも例外ではなく、

http://example.com/sample/

というURLにアクセスするためにはSample Controllerが必要になります。

ここではコントローラーの作成をせず、テンプレートにあたるビューファイルを増やしていくだけで自動でページが増えるような設定を紹介します。

つまり、上記の例でいくとSample Controllerを作成せず、sample.phpというビューファイルを作成するだけで上記URLにアクセスできるようになります。

あまり更新頻度の高くないページや静的なページに最適です。

静的ページ作成までの流れ

静的ページを表示させるまでの流れは以下の通りです。この方法は公式マニュアルにも紹介されています。

  1. 静的ページ表示コントローラー作成
  2. コントローラーにページ表示用のスクリプトを記載
  3. ルーティングの設定

それでは、順番に紹介していきます。

 

静的ページ表示コントローラーを作る

まずは静的ページを表示させるためのコントローラーを作成していきます。

作成する場所は「application/controllers/Pages.php」です。

ページ表示用スクリプト作成

Pageコントローラーを作成したらView()メソッドに表示用のスクリプトを記載していきます。

先ほどのPageコントローラを書き変えていきます。

テンプレートファイル存在チェック

7行目のfile_exists()で静的ページ用のファイルがあるかどうかをチェックし、ない場合には404エラーを返します。ビューファイルのパスは環境に合わせて変更して下さい。

show_404()はデフォルトのエラーページを表示するCodeIgniterのビルトイン関数です。

テンプレート変数セット

14行目から18行目まではテンプレートに渡すための変数を$dataに設定しています。

今回の例の場合、テンプレートファイル内では以下のようにして変数にアクセスできます。

テンプレート出力

最後に、おなじみのviewメソッドでテンプレートを出力します。

ルーティングを設定する

コントローラー表示確認

現在のところ、以下のURLにてコントローラーの表示が確認できます。

http://example.com/index.php/pages/view/{$page}

途中のindex.phpを削除したい場合は以下の記事を参考にして下さい。

CodeIgniter のルーティングからindex.phpを削除する。

 

ルーティング変更

ルーティングを変更するには、「application/config/routes.php」を編集する必要があります。

まず、CodeIgniterのデフォルトルーティングを今作成したPagesコントローラーのViewメソッドに変更します。

次に、追記した行で全てのルーティングをPagesコントローラーのViewメソッドに向けます。

これによって全てのルーティングが先ほど作成したPagesコントローラーのViewメソッドにて処理されるようになり、表示したいページをどんどん作っていくだけでサイトが表示されるようになります。

の形式で静的ページを増やしていきましょう。

上記のページにアクセスするためのURLは以下です。

実用ルーティング例

ここまでに作ったルーティングだと、全ての処理をPages/Viewが受け持つため、あまり実用的はありません。

実際は一部の静的ページのみを上記のようにルーティングしたいはずです。

CodeIgniterのルーティングは柔軟で、上から順番に解析していき、マッチした最初の規則をルーティングします。

そのため、以下のように書いておけばサイトのトップページはWelcomeクラスで処理され、その他のページはPagesクラスが受け持つことになります。

もう少し実用的な例になるとこのようになります。

また、小規模なサイトの場合は全てのアクションを一つのコントローラーが受け持つようにすると楽です。

CodeIgniterのルーティングからコントローラを取り除く

CodeIgniterに静的ページを追加する方法は以上です。

  • このエントリーをはてなブックマークに追加
  • Pocket

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。