Part2:Wikiを設置してみよう
Chapter.6 PukiWikiのカスタマイズ
デフォルトのデザインでは個性がなくてつまらないという人のために、PukiWikiのレイアウトをカスタマイズする方法を説明します。
PukiWikiなどのCMSでは、ファイルをHTMLとして出力する際に、ひな形を使って思い通りのレイアウトを作ることができます。このひな形をスキンといいます。内容(出力されるデータ)は同じでも、画面上で表示されるレイアウトや装飾といった見た目の表皮(スキン)の部分を変えることができることから、この名称が生まれました。スキンは、大まかなレイアウトを含んだHTMLファイルを出力するskinファイルと、レイアウト内容を細かく設定するスタイルシートの2種類のファイルから成り立っています。実際にはPukiWikiへ書き込んだデータ(「wiki/」ディレクトリ以下にテキストファイルとして保存)を呼び出し、skinファイルがレイアウトを、スタイルシートが装飾を決めるという構造になっています。
- ロゴマーク、ページタイトル、ページのURLで構成されるheader部分
- 作業内容を選択できるnavigator部分
- 左右のテーブルで別けられたメニュー部分とボディが入るコンテンツ部分
- 注釈が入るnote部分
- アイコンで構成されたtoolbar部分
- 更新日や作成者を表示した部分
- PukiWikiの著作権情報を表示したfooter部分
デフォルトのレイアウトでは、出力されたHTMLファイルのソースを読んでみると、<div>~</div>で区切られて大きく7つの部分から成り立っているのがわかります。この構造を作り出しているのがskinファイルです。
では、理解しやすい①の部分のHTMLソースとskinファイルを見比べながら説明しましょう。skinファイルは「skin/pukiwiki.skin.php」です。
<div id="header">
<a href="http://localhost/pukiwiki/index.php?FrontPage"><img id="logo" src="image/pukiwiki.png" width="80" height="80" alt="[PukiWiki]" title="[PukiWiki]" /></a>
<h1 class="title"><a href="http://localhost/pukiwiki/index.php?plugin=related&amp;page=FrontPage">FrontPage</a></h1>
<a href="http://localhost/pukiwiki/index.php?FrontPage"><spanclass="small">http://localhost/pukiwiki/index.php?FrontPage</span></a>
</div>
次に同じ部分のskinファイルを示します。
<div id="header">
<a href="<?php echo $link['top'] ?>"><img id="logo" src="<?php echo IMAGE_DIR. $image['logo'] ?>" width="80" height="80" alt="[PukiWiki]" title="[PukiWiki]" /></a>
<h1 class="title"><?php echo $page ?></h1>
<?php if ($is_page) { ?>
<?php if(SKIN_DEFAULT_DISABLE_TOPICPATH) { ?>
<a href="<?php echo $link['reload'] ?>"><span class="small"><?php echo $link['reload'] ?></span></a>>
<?php } else { ?>
<span class="small"
<?php require_once(PLUGIN_DIR. 'topicpath.inc.php'); echo plugin_topicpath_inline(); ?>
</span>
<?php } ?>
<?php } ?>
</div>
skinファイルには<?php ~ ?>に囲まれた箇所がたくさんあります。この囲まれた部分がphpスクリプトで、phpインタプリタが逐次解釈して文字列に置き換えていきます。たとえばロゴの画像のリンク先は、<?php echo $link['top'] ?>です。[ ]は配列変数を表しています。配列変数は複数の値を持った変数で、[ ]内のラベルに対応した値を持ちます。このスクリプトの意味は、リンク先URLが入っている配列変数からtopページ($link['top'])のURLを書き出せ(echo)というものです。同じように、イメージソースは<?php echo IMAGE_DIR. $image['logo'] ?>>で表され、初期設定ファイルで定められたグローバル変数IMAGE_DIR(値は'image/')とイメージのファイル名が収められた配列変数からロゴ($image['logo'])のファイル名を繋げて書き出されています。なお、PHPの中での「.」は前後の文字列を繋げるという意味です。
次に、ページタイトル部分は<?php echo $page ?>でこの$pageに現在出力しているページ名とURLが入っていると理解できます。下のリンク表示を出力するphpスクリプトには制御文が入っていますので詳しい説明は省きますが、「パンくずリスト表示プラグイン」がオンになっていれば、リストから同じページをリロードするように書き出し、オフになっていれば直接プラグインのスクリプトを呼び出しこのページのURLを書き出す(結果は同じ)という意味です。
さて、よくソースを読んでみると、フォントの大きさや色などの情報が入っていません。
そこでキーとなるのがタグの中にあるidやclassです。これらidやclassで別けられた文字や画像(オブジェクトという)の属性を決める役割をしているのがスタイルシート(CSS:カスケーディングスタイルシート)と呼ばれるものです。スタイルシートの役割を理解しやすいように、上のソースでスタイルシートがある場合(通常)とない場合の対比を次の図に示しました。
スタイルシートがない場合は単にブロックごとに上から画像や文字が並んでいるだけです。これに対し、スタイルシートがある場合は、細かいレイアウトや文字装飾が加わっています。これがスタイルシートの働きです。skinファイルとスタイルシートで、スキンは成り立っているのです。
ではスタイルシートを概要を説明しましょう。PukiWikiのデフォルトスキンで使用されているスタイルシートは「skin/pukiwiki.css.php」です。このファイルもPHPスクリプトとなっています。普通スタイルシートはテキストファイル(拡張子は.css)ですが、PukiWikiでは状況に応じて動的にスタイルシートが作り出されるようになっています。では、テキストエディタで開いてみましょう。
スタイルシートの書式は
セレクタ{
プロパティA:値A;
プロパティB:値B;
}
となっています。セレクタにはスタイルを適応する対象を指定します。プロパティはセレクタで指定された範囲に適用される属性です。詳しくはスタイルシートの解説書を参照してください。
header部分を例にとると、下図の①~④にあたる部分が、スタイルシートの<div id="header">~</div>で囲まれた部分で以下のように指定されています。
①(332行目から336行目)
/* pukiwiki.skin.php */
div#header {
padding:0px;
margin:0px;
}
②(443行目から449行目)
img#logo {
<?php if ($media == 'print') { ?>
display:none;
<?php } else { ?>
float:left;
margin-right:20px;
<?php } ?>
}
③(118行目から125行目)
h1.title {
font-size: 30px;
font-weight:bold;
background-color:transparent;
padding: 12px 0px 0px 0px;
border: 0px;
margin: 12px 0px 0px 0px;
}
④(207行目)
.small { font-size:80%; }
①ではセレクタが「div#header」となっています。これは「idがheaderとされているdiv」という意味です。つまり<div id="header">~</div>にあるすべてのオブジェクトが次に書かれているプロパティを持つということになります。そのプロパティとは、
padding:0px;
margin:0px;
ですので、オブジェクト間のスペースをなしにすることを意味しています。パディングとマージンはほぼ同じ意味合いですが、ブラウザによって解釈の違いがあるので両方の指定となっています。
②はid="logo"のimgについての記述です。条件文で印刷モードなら表示しないとされていて、その他の場合は以下のように表示されます。
③のセレクタh1.titleはclass="title"(クラスがtitle)にあるh1(最上位の見出し)という意味です。本例では「FrontPage」と表示されている部分です。プロパティは以下の通りです。
④のセレクタ.smallは*.smallの省略形で、クラスがsmall(class="small")のオブジェクトすべてに適応されるという意味です。
このように文字やイメージの配置や形状など殆どの属性がスタイルシートで指定できることがわかりました。スキンやスタイルシートは奥深いですが、難解というほどでもありません。ブラウザに表示されたレイアウトとそのソース、「skin.php」、「css.php」を見比べていくとその相関関係が見えてくると思います。なお、スタイルシート機能は閲覧者のブラウザ上で動作するので、ブラウザの種類によって若干の表示の差異が存在します。
オリジナルレイアウトの手始めとしてロゴの画像を変更してみましょう。準備するのはpngで作られたロゴ画像です。ロゴ画像は「image/」にFTP転送します。次に「skin/pukiwiki.skin.php」をテキストエディタで開き、まず最初に配列変数$link['logo']に入っているファイル名を変更します。また、imgタグ中にイメージのサイズを指定します。サイズの指定を忘れると、80ピクセル4方に縮小表示されるので注意が必要です。記述が完了したらそのまま上書きし、元のディレクトリにFTP転送します。
$_IMAGE['skin']['logo'] = 'your_image.png';
<a href="<?php echo $link['top'] ?>"><img id="logo" src="<?php echo IMAGE_DIR. $image['logo'] ?>" width="300" height="224" alt="[PukiWiki]" title="[PukiWiki]" /></a>
次に、タイトル文字の大きさとフォントを変えてみましょう。フォントに関しては「pukiwiki.css.php」を変更します。変更場所はh1.titleのセレクタです。h1のセレクタを変更するとページ内のすべてのh1に影響するので注意が必要です。
h1.title {
font-family:cursive;
font-size: 50px;
font-weight:normal;
background-color:transparent;
padding: 40px 0px 0px 0px;
border: 0px;
margin: 40px 0px 0px 0px;
}
skinファイルとスタイルシートをカスタマイズすれば、思うようにレイアウトを作ることができます。しかし、それにはPHPスクリプトとスタイルシートへの深い理解がなければ、すぐには完成しないでしょう。
そこで登場するのがフリーのスキンです。PukiWikiでは多くのスキンが公開されているので、自分の好みにあったスキンをインストールすることができます。
本項では人気のあるirid(ありぃ氏制作)をインストールしてみましょう。iridには3種類のスタイルシートが入っています。どのデザインを使うかは「pukiwiki.skin.php」で指定することになります。
PukiWiki公式ホームページから[自作スキン]→[irid]と進み、記事中の[ダウンロード]をクリックし、いったんデスクトップに保存します。
[ファイルを開く]を選択するとデスクトップに展開されます。
デスクトップ上でのファイル展開が終わったら、使用するスタイルシートを設定します。展開した「irid」フォルダにある「pukiwiki.skin.php」をテキストエディタで開きます。4行目の
$irid_style_name = "cloudwalk";
がスキンを設定するスクリプトです。cloudwalkでよければこのままで、orangeboxの方がよければ
$irid_style_name = "orangebox";
と変更します。文字コードがEUCになっていることを確認し、上書き保存してファイルを閉じます。FTPでpukiwikiがインストールされているディレクトリの「skin/」以下にフォルダごと転送します。
cloudwalk(左)とorangebox(右)。好みに合わせて選択しましょう。
次にpukiwiki.ini.phpを編集します。86行目の
define('SKIN_DIR', 'skin/');
を、次のように変更します。
define('SKIN_DIR', 'skin/irid/');
編集したファイルを保存し、元のディレクトリに転送します。これでスキンが適応されました。サーバにアクセスして確認しましょう。
ここではUNIX系OSを採用したレンタルサーバ用の手順を説明しましたが、WindowsにPukiWikiをインストールしている場合も、同じように行なうことができます。その際も、「pukiwiki.skin.php」の文字コードはEUCにする必要があります。もしShift-JISにするなら、PukiWiki本体の文字コードと設定をすべて変更することになるので注意が必要です。
- Chapter.1 Wikiって何?
- 1-01 Wikiの仕組み
- 1-02 Wikiでできること
- 1-03 Wikiは何に使えるの?
- Chapter.2 Wikiを始めるには
- 2-01 livedoor Wikiに新規登録する
- 2-02 livedoor Wikiの初期設定をする
- 2-03 livedoor Wikiにテキストを入力する
- 2-04 livedoor Wikiのテキストを装飾する
- 2-05 livedoor Wikiのテキストをリスト表示する
- 2-06 livedoor Wikiで表を作成する
- 2-07 livedoor Wikiでリンクを張る
- 2-08 livedoor Wikiに画像を表示する
- 2-09 コメントやトラックバックの機能を利用する
- Chapter.3 Wikiをカスタマイズするには
- 3-01 Wikiの設定を変更する
- 3-02 Wikiのデザインを設定する
- 3-03 Wikiのプラグインを設定する
- 3-04 Wikiのメンバーを追加・管理する
- Chapter.4 Wikiをもっと便利に使うには
- 4-01 Wikiでアフィリエイトを行う
- 4-02 Wikiのアクセスを調べる
- 4-03 Wikiの更新を知るには
- 4-04 その他のWikiを使うには
- Chapter.5 Wikiを設置する
- 5-01 どのWikiを選べばよいか
- 5-02 どこにインストールするかを決める
- 5-03 レンタルサーバにPukiWikiをインストールする
- 5-04 Windowsサーバにインストールする
- 5-05 Linuxサーバにインストールする
- Chapter.6 PukiWikiのカスタマイズ
- 6-01 PukiWikiの見た目を変える
- 6-02 PukiWikiのプラグインを使う
- Chapter.7 PukiWikiのメンテナンス
- 7-01 PukiWikiのバックアップとバージョンアップ
- 7-02 PukiWikiをプライベートで閲覧する
- 7-03 PukiWikiをWindowsサーバで安全に使うには
- 7-04 PukiWikiをLinuxサーバで安全に使うには
- 7-05 PukiWikiを便利に使うためのツール