デザイン(HTML)仕様
narutoでは独自のHTMLテンプレータを利用してHTMLの動的出力を行っています。 オリジナルのHTMLテンプレートを編集することで、出力されるHTMLを変更することが可能です。 CSSを変更するだけでもデザインを大きく変えることができますが、HTMLを変更することでさらにデザインの自由度は上がります。
このページではnarutoのHTMLテンプレートがどのようにしてできているかを解説していきます。
基本的なこと
「HTMLテンプレート」と言っても、殆ど普通のHTMLと変わるところはありません。 ただ、一部に{ }で囲まれた「命令」が組み込まれており、これはほぼPHPと同じ構文で記述されています。
テンプレートで使用されている命令は「if (〜)」と「foreach (A as B)」の2種類です。 これらは乱暴に言ってしまえば「もし〜が空(0, FALSE, 偽)じゃなければ」と「リストAの中身を順番にBとして使え」という命令です。 基本的にこれらの部分は「さわらぬが吉」だと考えてくれればOKです。もちろん、PHPに詳しい方はゴリゴリ書き換えてもOKだと思いますが……^^;
他には{$*****}となっているところがあります。この「$*****」の部分が変数です。 この部分は単純にその変数の中身に置き換わります。
プログラミングを経験したことがない方には少しわかりづらいかもしれませんが……HTMLテンプレートと、実際に表示されるHTMLを見比べてみると、少しその仕組みがわかるのではないでしょうか。
テンプレートで使用可能な変数
- $url
- BlogのURL
- $title
- Blogのタイトル に設定した内容
- $description
- Blogのコメント に設定した内容
- $subject
- Windowsのタイトル文字列
- $entries
-
表示しようとしている記事データのリスト(配列)。テンプレートでは
{foreach ($entries as $e)}
の様に使われています。 -
このとき、$eに代入されるデータ(連想配列)は以下の通り。
$e.eid -- 記事ID
$e.cid -- カテゴリID
$e.aid -- 投稿者ID
$e.sstamp -- 日時
$e.title -- タイトル
$e.body -- 本文
$e.trackback -- トラックバック許可された記事かどうか (0 or 1)
$e.comment -- コメントが許可された記事かどうか (0 or 1)
$e.auther -- 管理者名
$e.category -- カテゴリ名
$e.count_c -- この記事へのコメント数
$e.count_t -- この記事へのトラックバック数
- $comment
- コメントリスト&フォーム表示フラグ (0 or 1)
- $comments
-
表示しようとしているコメントデータのリスト(配列)。テンプレートでは
{foreach ($comments as $c)}
の様に使われています。 -
このとき、$cに代入されるデータ(連想配列)は以下の通り。
$c.mid -- コメントID
$c.eid -- 記事ID
$c.name -- 名前
$c.email -- メールアドレス
$c.url -- URL
$c.comment -- 本文
$c.host -- 投稿者リモートホスト
$c.cstamp -- 投稿日時 - $err
- コメント投稿時のエラーメッセージ
- $msg
- コメント投稿時の通常メッセージ
- $def
-
コメントフォームの初期値。
$def.name -- 名前(name)
$def.email -- メールアドレス(e-mail)
$def.url -- URL
$def.comment -- 本文(comment) - $trackback
- トラックバックリスト&フォーム表示フラグ (0 or 1)
- $comments
-
表示しようとしているトラックバックデータのリスト(配列)。テンプレートでは
{foreach ($trackbacks as $tb)}
の様に使われています。 -
このとき、$tbに代入されるデータ(連想配列)は以下の通り。
$tb.tid -- トラックバックID
$tb.eid -- 記事ID
$tb.title -- トラックバックした記事のタイトル
$tb.url -- トラックバックした記事のURL
$tb.name -- ブログ名
$tb.excerpt -- 本文
$tb.cstamp -- 投稿日時 - $calendar
-
カレンダーHTML
$calendar.table -- table版カレンダーHTML
$calendar.vertical -- 1行(縦)版カレンダーHTML
$calendar.horizontal -- 1行(横)版カレンダーHTML - $comments
-
表示しようとしているカテゴリ一覧データのリスト(配列)。テンプレートでは
{foreach ($categories as $cat)}
の様に使われています。 -
このとき、$catに代入されるデータ(連想配列)は以下の通り。
$cat.cid -- カテゴリID
$cat.name -- カテゴリ名
$cat.count -- カテゴリ内の記事数 - $plugins
-
プラグインが表示しようとしているオブジェクトのリスト(配列)。テンプレートでは
{foreach ($plugins as $p)}
の様に使われています。 -
このとき、$pに代入される記事データ(連想配列)は以下の通り。
$cat.title -- オブジェクトのタイトル
$cat.string -- 内容
$cat.template -- 内容を記述したHTMLテンプレートファイル名 - $recentEntries
-
表示しようとしている「最近の記事」データのリスト(配列)。テンプレートでは
{foreach ($recentEntries as $r)}
の様に使われています。 -
このとき、$rに代入されるデータ(連想配列)は以下の通り。
$r.eid -- 記事ID
$r.title -- 記事のタイトル - $recentComments
-
表示しようとしている「最近のコメント」データのリスト(配列)。テンプレートでは
{foreach ($recentComments as $r)}
の様に使われています。 -
このとき、$rに代入されるデータ(連想配列)は以下の通り。
$r.eid -- コメントされた記事ID
$r.cstamp -- コメント投稿日時
$r.name -- コメント投稿者名 - $archives
-
表示しようとしている「過去ログ」データのリスト(配列)。テンプレートでは
{foreach ($archives as $a)}
の様に使われています。 -
このとき、$aに代入される記事データ(連想配列)は以下の通り。
$r.ym -- リンク用「年月」(20XX01〜20XX12)
$r.y -- 過去ログの「年」
$r.m -- 過去ログの「月」(1〜12) - $links
-
表示しようとしている「リンク」データのリスト(配列)。テンプレートでは
{foreach ($links as $link)}
の様に使われています。 -
このとき、$linkに代入されるデータ(連想配列)は以下の通り。
$link.name -- リンクグループ名
さらにこの時、$link.groupは
$link.group -- リンクグループ内のリンクデータのリスト(配列){foreach ($link.group as $l)}
の様に使われています。 -
このとき、$lに代入されるデータ(連想配列)は以下の通り。
$link.url -- URL
$link.title -- サイト名 - $profiles
-
表示しようとしている「プロフィール」データのリスト(配列)。テンプレートでは
{foreach ($profiles as $p)}
の様に使われています。 -
このとき、$pに代入される記事データ(連想配列)は以下の通り。
$r.aid -- ユーザーID
$r.name -- ユーザー名
date_formatについて
{date_format("Y-m-d H:i:s", $xxxxx)}の様に「date_format」命令を使用しています。この "Y-m-d H:i:s" の部分を編集することで日時の表示を変更することができます。
例えば、2004年12月1日 午後3時12分27秒を "Y-m-d H:i:s" でフォーマットすると
2004-12-01 15:12:27となります。フォーマット指定文字列に使用可能な文字は以下の通りです。
a | "am" または "pm" |
A | "AM" または "PM" |
B | Swatch Internet time。"000" 〜 "999" |
d | 日(2桁)。"01" 〜 "31" |
D | 曜日。3文字の英語表記。"Mon" から "Sun" |
F | 月。フルスペルの英文表記。"January" から "December" |
g | 時。12時間単位。"1" 〜 "12" |
G | 時。24時間単位。"0" 〜 "23" |
h | 時(2桁)。12時間単位。"01" 〜 "12" |
H | 時(2桁)。24時間単位。"00" 〜 "23" |
i | 分。"00" 〜 "59" |
j | 日。"1" 〜 "31" |
l(小文字"L") | 曜日。フルスペルの英文表記。"Sunday" 〜 "Saturday" |
L | 閏年であるかどうかを表す論理値。"1"なら閏年。"0"なら閏年ではない。 |
m | 月。数字。"01" 〜 "12" |
M | 月。3文字の英文表記。"Jan" 〜 "Dec" |
n | 月。数字。"1" 〜 "12" |
O | グリニッジ標準時(GMT)との時間差。"-1200"〜"+1200" |
r | RFC822 フォーマットされた日付。例えば "Example: Thu, 21 Dec 2000 16:01:07 +0200" |
s | 秒(2桁)。"00" 〜 "59" |
S | 英語形式の序数を表すサフィックス。"st", "nd", "rd" または "th" |
t | 指定した月の日数。"28" 〜 "31" |
T | このマシーンのタイムゾーンの設定。例えば "JST" |
U | UNIXタイムスタンプ。1970年1月1日0時0分0秒からの秒数。 |
w | 曜日。数値。"0"(=日曜) 〜 "6"(=土曜) |
W | 月曜日に始まる年単位の週番号。 |
Y | 年(4桁)。"1999", "2004"など。 |
y | 年(2桁)。1999 = "99", 2004 = "04"など。 |
z | 年間の通算日。"0" 〜 "366" |
Z | タイムゾーンのオフセット秒数。"-43200" 〜 "43200" |