業務アプリ開発講座

管理システム・トップページをもう一工夫

管理システムのトップメニューHTMLを作成しました。これから他の画面のHTMLを作成していくわけですが、もう一工夫したいと思います。下記を追加します。

  • baseタグを使用して相対URLの記述ルールの一本化
  • 外部スタイルシートファイルの読み込み方法の変更
  • JQueryの読み込み
  • PageHeaderソースの外部ファイル化

Baseタグを使用して相対URLの記述ルールの一本化

例えば、作成したindex.phpからassets/style.cssへの相対パスは、../assets/style.cssとなります。これは index.phpから見るとstyle.cssは一つ上の仮想にあるassetsディレクトリ内にあるstyle.cssファイルということになります。
では、master/staff-list.phpからstyle.cssを参照する場合はどうなるでしょう。相対パスでは../../assets/style.cssと書きます。必要が階層を2つ遡る必要があります。
このように階層が一定でない場合でも同じルールで記述できる仕組みがあれば楽ですね。開発途中で階層の変更があったとしてもソースの書き換えが発生しなければとても助かります。
そこで、<base>タグの登場です。<head>タグ内に<base>タグを追加します。開発環境のBookminの場合、以下を<title>タグのすぐ下に追記します。間違っても<link>タグの後に書いてはいけません。

<base href="http://www-dev.bookmin.jp/">

以降すべての相対パスはroot以下のパスを書けばよくなります。要するに<base>を付加することにより全ての相対パスを絶対パス、フルパスにできるわけです。注意点はhrefの末尾に/を忘れないようにしましょう。

外部スタイルシートファイルの読み込み方法の変更

まず、assets直下にstyle.cssファイルを作成し、下記を追記します。

@charset "utf-8";
@import url("css/bootstrap.css");
@import url("css/font-awesome.min.css");
@import url("css/bookmin.css");
@charset
このCSSファイルの文字コードを宣言します。ここでは文字コードにutf-8を指定しています。必須ではありませんが、宣言するようにした方が無用な文字化け等を防ぐことができます。
@import
CSSファイルからその他のCSSファイルを読み込みます。ここでは、3つのCSSファイルを読み込んでいます。urlの中に記述するパスは読み込み元であるstyle.cssからの見た相対パスか、絶対パス(http://~)を記述します。
bootstrap.cssですが、学習用にこちらを追加います。
本番リリース時はファイルサイズを圧縮したbootstrap.min.cssファイルを読み込むようにしましょう。

これで、style.cssファイルが良い出来ました。

index.phpに戻りましょう。

<base>と合わせて<head>を下記のように書き換えましょう。

<head>
	<meta http-equiv="Content-Type" content="text/html" charset="utf-8">
	<title>Bookmin 管理</title>
	<base href="http://www.dev.bookmin.jp/">
	<link rel="stylesheet" href="assets/style.css" type="text/css" charset="utf-8">
</head>

これで、今後新たにcssファイルを作成したとしても、style.css@importを追加するだけで済むようになりました。

JQueryの読み込み

「PageHeaderソースの外部ファイル化」の前準備です。ここで初めてJavascriptが登場します。
index.phpに下記を追記します。bodyの閉じタグ</body>の直前に追記です。

<script src="assets/js/jquery-2.1.4.js" type="text/javascript" charset="utf-8"></script>
</body>
</html>

PageHeaderソースの外部ファイル化

以下の手順で作業をすると良いでしょう。

  1. index.phpに書いてある<nav>ブロックをそっくり外部ファイルにします。
    1. assetsディレクトリ内にtemplateというディレクトリを作ります。
    2. その中にnav.htmlというファイルを作ります。
    3. nav.htmlindex.php内の<nav>ブロックをそっくりコピーします。
    4. index.php内の<nav>ブロックを削除します。
  1. 1.1で作成したassets / templateディレクトリにtemplate.jsファイルを作ります。
  2. template.jsにajax(非同期通信)による外部ファイルの読み込みとそれをソース内に当てはめるコードを書き加えます。(jqueryについては他で詳しく解説します。)
$(function(){
	$.ajax({
		url:"assets/template/nav.html",
		dataType:"html",
		success:function(htm){
			$('.breadcrumb').before(htm);
		},
		error:function(obj){
			alert(obj.resposeText);
		}
	});
});
url
1で作成した。nav.htmlを指定します。
success
nav.htmlから帰ってきた内容が引数htmに格納され、それをclass属性にbreadcrumbを含んだ要素(パンくずリスト)の前に埋め込みます。
  1. index.phpにJQueryファイルとtemplate.jsを読み込むコードを書き加えます。
<script src="../assets/js/jquery-2.1.4.js" type="text/javascript" charset="utf-8"></script>
<script src="../assets/template/template.js"></script>
</body>
</html>

これで、変更前とindex.phpが同じように表示されれば成功です。


Leave a Comment