初心者にもわかるCodeIgniter 其の三改【簡単なテンプレートを利用してviewを固めよう】
最初の流れは前回と同じになります。というわけで、流れをつかみたい方は以下を参考に。
初心者にもわかるCodeIgniter 其の三【controllersとviewsで変数の受け渡しとサイト作成】
変数の受け渡し
前回のものに対して少々修正を行います。
application/core/MY_Controller.php を編集
<?php
class MY_Controller extends CI_Controller
{
public $data;
public function __construct()
{
parent::__construct();
$data = array();
$data['assets'] = base_url().'assets';
$data['include'] = FCPATH.'application/views';
$this->data = $data;
}
}
?>
base_url()です。
これを使った方が、色んな構造に対応できると思います。
AUTOLOADの利用
前回ではMY_Controllerにすべてを呼び出していたわけですが、基礎の基礎、それこそどんな場所でも利用するライブラリやヘルパーがあると思います。
なので、CodeIgniterに備わっている機能を利用して、無駄な記述を減らしましょう。
application/config/autoload.php を編集
<?php
//元々配列が入力できるようになっているので、そこに上書き
$autoload['libraries'] = array('parser','form_validation','pagination','user_agent','lib');
$autoload['helper'] = array('form','url','array','file','cookie');
?>
Configクラスの利用
Configクラスは設定ファイルを読み込むクラスです。
デフォルトの設定ファイル(application/config/config.php)の他に、独自の設定ファイルを読み込むことができます。
前回ではいちいちコントローラー側にページタイトルなどを書いてましたが、ページが増えると管理が難しくなります。
そこで、ページの情報を設定ファイルで管理するという方法を取ります。
application/config/li_front_meta.php を作成
<?php $config['li_front_meta'] = array( 'index' => array( 'page_title'=>'TOP', ), 'page' => array( 'page_title'=>'ページ', ), ); ?>
簡潔に書いていますが、ここの配列にページごとの読み込むCSSや、descriptionを追加して呼び出すことも可能です。
続いて読み込みとしてapplication/core/MY_Controller.php を編集
<?php
$this->config->load('li_front_meta');
$front_meta = $this->config->item('li_front_meta');
$data['seg1'] = ($this->uri->segment('1'))? $this->uri->segment('1') : 'index';
$data['page_title'] = $front_meta[$data['seg1']]['page_title'];
$data['body_class'] = $data['seg1'];
?>
viewファイルを利用したサイトの作成
前回は複雑なテンプレートにより、自分でも面倒になってしまいました。
もっと簡単でbootstrapを利用したもので行きましょう。
Honoka – 日本語も美しく表示できるBootstrapテーマ
ディレクトリ前回と同じで、一番上の階層に
- application
- assets
- system
と並べます。
assetsの中にダウンロードしたファイルの
- css
- fonts
- js
を入れてしまいます。
下準備はこれで完了。
続いてviewを。
application/views/i/header.php を編集
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title><?php echo $page_title ?></title>
<link rel="stylesheet" type="text/css" href="<?php echo $assets ?>/css/bootstrap.css">
<!--[if lt IE 9]>
<script src="//oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="//oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body class="<?php echo $body_class ?>">
<header>
<?php include($include."/i/nav.php");?>
</header>
application/views/i/nav.php を編集
<div class="navbar navbar-default navbar-fixed-top"> <div class="container"> <div class="navbar-header"> <a href="/" class="navbar-brand">Honoka</a> <button class="navbar-toggle" type="button" data-toggle="collapse" data-target="#navbar-main"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> </div> <div class="navbar-collapse collapse" id="navbar-main"> <ul class="nav navbar-nav"> <li><a href="/">Top</a></li> <li class="dropdown active"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Demo <span class="caret"></span></a> <ul class="dropdown-menu" role="menu"> <li><a href="./bootstrap-ja.html">Japanese Page</a></li> <li><a href="./bootstrap.html">English Page</a></li> </ul> </li> </ul> </div> </div> </div>
application/views/i/footer.php を編集
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="<?php echo $assets ?>/js/bootstrap.min.js"></script>
<script type="text/javascript">
$('.bs-component [data-toggle="popover"]').popover();
$('.bs-component [data-toggle="tooltip"]').tooltip();
</script>
</body>
</html>
application/views/index.php を編集
<?php include("i/header.php");?>
<div class="container">
<div class="page-header">
<div class="row">
<div class="col-lg-8 col-md-7 col-sm-6">
<h1>Honoka</h1>
<p class="lead">日本語も美しく表示できるBootstrapテーマ</p>
</div>
<div class="col-lg-4 col-md-5 col-sm-6">
</div>
</div>
</div>
</div>
<?php include("i/footer.php"); ?>
以上です。
今回はbootstrapという事もあり、無駄なものはすべて省きました。
自由に編集して下さい。
新たにサンプルページを作りました。
参考ページ:http://sample.xn--pbku02iq0izkz.net/
今後、こちらを主にカスタマイズしていく予定です。
