メニュー 閉じる

BiND2で作ったサイトにMT4を埋め込んでみた


まぁ、手短に言えば「BiNDでMTのテンプレートを作る」というコトです。

BiND×MT by PhotoPierre

周囲ではBiND2で自前ウェブサイトを作ることが流行してる。そして、それについて質問されちゃうので、自分でもBiND2を使ってみて、その勝手などを確認したり研究したりしています。

BiND FOR WEB LIFE

練習にと、あるサイトをゼロから作り始めてみて思ったのだけれども、結局これだけでは用が足りない。じゃぁ、ブログなり何かCMSを導入しましょう……っつったって、そしたら結局、デザイン部分をBiNDでってわけにいかない。ところが情報的には些末とは言えどもデザインはかなり重要で、ソース手書きはタイヘン。ソース手書きできるんならBiNDなんか使わないし。

  • デザイン変更はBiNDで自由に、
  • 情報の内容の変更はブラウザで、

っていうのは、どーよ?

一応、DIGITAL STAGE 社としては、ブログと融合なんかを考えて、BiND2.5 + SYNC を開始すると宣言しているけれども、今すぐに無いのは不満だ(実際には4月中旬からサービス開始予定)。というわけで、BiND2とMT4の融合を目指した超々ロングなメモを晒すことにした。まったく、余分なコトしてないで、もっとカネ稼げ、自分。

MOVABLE TYPE

一応、BiND+SYNCも触ってみましたけど……

警告 WARNING

  • このページにSYNCの情報はありません。SYNCを使わないでブログとリンクさせることについて考えています。
  • 内容についての質問に、記事掲載者はお答えしないことがあります。
  • 質問すら無かったことにする可能性があります。
  • このページに記してある内容は、個人的に使用した記録です。
  • 必ずバックアップをとりながら作業してください。
  • このページで得た情報によって何か損害がありましても、製造者・販売者・記事掲載者を含む誰も責任を負いません。
  • 批判的な発言も、MOVABLE TYPE と BiND とが好きだからこそ生まれてくる意見とご理解ください。間違えは訂正しますので反論してください。
  • もっとソースを短くしたり、書き出しファイルを少なくすることができます。コレが正解!! というやりかたはありませんので、個々にあわせたやり方でやることを勧めます。説明が短く済む方法で説明しています。

この記述のサーバー条件

イマドキ、Perl5.6.0なんていうレンタルサーバもまだあるようですが、Perlはせめて5.8.1以上じゃないと後々面倒かもしれません。MTはPerl5.6.1以上じゃないと動きません。

ブログソフトMovable Type(むーばぶるたいぷ)は、名前が長いのでMTと略記しますからよろしく。で、バージョン4.xxなので「MT4」って書いとく。この記事中の「MT」「MT4」は、特別な断り書きが無い限り「Movable Type 4.25」(記事を書いている時の最新バージョン)のことです。

基本的な考え方

MT4のコンセプトからも、BiNDのコンセプトからも、ずれてます。

  1. BiNDの便利なオーサリング機能を活かして静的ページ群を作り
  2. ついでに、BiNDでMTのテンプレートを作る

短く言うなら、それだけのことだ。

こうしておくことで、BiNDで作られたナビゲーションやらデザインやらその他の細かい部分を

  1. BiNDで修正して、
  2. BiNDでアップロードして、
  3. MTを再構築すれば、
  4. あれよあれよとMTで作られた全ページも修正されるはずなのだ。

たとえば、こんなページ構成

「最新のお知らせ」の内容だけをMTで扱うことにし、その他の情報はあらかじめBiNDで作り込んでおく。

「その他の情報ページを作る」という機能はMT4にも含まれていますが、ある程度以上の知識が必要になります。そんな面倒な部分はBiNDにやっといてもらいましょう、というコンセプト。

じゃあ、まずはBiNDで基本となるサイトを制作する

リンクパーツの設定

気をつける点は、「最新のお知らせ」のリンク先。普段は選択するだけのリンク先に「http://」で始まる絶対URLを手で打ち込む。例えば最新情報はみんな「news」というディレクトリに放り込むことにしましょう。他と重複しなければ。しからば

  • http://www.ドメイン/news/

あとは省略。気張って作ってください。発売時にはたしか、2時間で作れるという触れ込みだったし、ここ最近は「10分で作れる」とか言っちゃってます。個人的には2週間以上かかります。スキルの低さでしょうか。

もちろん「ドメイン」って入れないでね。自分の使っているドメインを入れるんですよ。フォトピエールならば「photopierre.com」だな。

MTをサーバーにインストールしよう

ここは積極的に省略。ネット上にもいっぱい情報がありますし、良書もたくさん出版されています。フツーにインストールして動かすだけなら、フツーのマニュアルだけで充分です。

取り敢えず、新しいブログを作る項目では「コミュニティブログ」を作ってみてください。

MTが吐き出すファイルの構成を考える

MTの初期値では、ホントにいろいろなページを書き出す設定になっている。

情報の利用目的などにも依ると思いますが、月別アーカイブとか日別アーカイブって本当に必要? 便利だろうということでいろいろあるから複雑になるわけで、実際には「メインページ」と「ブログ記事ページ」だけ使うことにする。あとはRSS(Atom)。

構成が決まったら、設定

まず、MTの設定をしちゃいましょう。

[設定]→[全般]

とくに何もないけれども、タイムゾーンは確認しておいた方がいい。

[設定]→[公開]

BiNDでの「最新のお知らせ」のリンク先「http://www.ドメイン/news/」を入力。サイトパスには、http://ドメイン/news/ に至るサーバーのフルパスを書く。フルパスが調べてもわからないということはないと思いますが、フルパスビューアっていう道具もある。

[設定]→[ブログ記事]

「ブログ記事表示数」は、最新のお知らせページ(http://www.ドメイン/news/)に何件表示するかという数字。そして、「降順」なら、新しい記事が上に、下に行くにつれて古い記事に。

その他の項目は、お好きなように。

設定したら、テンプレートの心配

メインページ

[デザイン]→[テンプレート]を見てみよう。

「テンプレートの設定」で、メインページのファイルへのリンクを「000index.html」としておく。

2009bmp04.jpg

BiND側では、最新情報用の新規コーナーを作る。テンプレートなどは好きに。

コーナー設定

コーナー設定で、コーナー名は「最新情報」など自分でわかりやすいものに。ディレクトリ名は「news」。

BiNDでページのメインブロック以外を作り込む。メインブロックは、ブロックレイアウトを「左右違い」で「左広め」にして、広い左側には記事本文、狭い右側には記事一覧を書く、という構成にしてみる。

ヘッダ
ビルボード
記事本文 記事一覧
フッタ

BiNDで作るのは実際に表示されるファイルそのものではなくてテンプレート(=ひな型)なので、ファイル名をMTのテンプレート設定「ファイルへのリンク」で指定した「000index.html」とする。大文字小文字・全角半角にはいつでも気をつける。

ニュースTOPのページ設定

「スクリプトと詳細設定」の窓に、ちょっとおまじない。

<link rel="alternate" type="application/atom+xml" title="Recent Entries" href="<$mt:Link template="feed_recent"$>" />
<script type="text/javascript" src="<$mt:Link template="javascript"$>"></script>
<style>
.mt-image-center {
display:block;
margin:1em auto;
}
.mt-image-left {
display:block;
float:left;
margin:1em 1em 1em 0;
}
.mt-image-right {
display:block;
float:right;
margin:1em 0 1em 1em;
}
</style>

メインのブロックの編集で、ちょっと違うことを書き込みますよ。

まず、この↓内容でひとつカスタムタグ。タイトルは「記事本文」とかわかりやすいもの。

<MTEntries>
<MTEntriesHeader>
<div class="hfeed"> </MTEntriesHeader>
<div id="entry-<mt:EntryID>">
<h3><a href="<$MTEntryPermalink$>" title="この記事ページを見る" style="border:none;"><$MTEntryTitle$></a></h3>
<ul>
<li class="published"><abbr title="<mt:EntryDate format_name="iso8601">"><$MTEntryDate format="%x"></abbr></li>
</ul>
<p>
<$MTEntryBody$>
</p>
<MTEntryIfExtended>
<p class="extended">【続きを見る】→"<a href="<$MTEntryPermalink$>#more" title="この記事の続きもご覧ください"><$MTEntryTitle$></a>"</p>
</MTEntryIfExtended>
<p style="font-size:smaller;">この記事へのリンクは<input type="text" value="<$MTEntryPermalink$>" style="width:30em;" /></p>
</div>
<hr class="cls" />
<MTEntriesFooter>
</div>
</MTEntriesFooter>
</MTEntries>

[分割]して、またカスタムタグ。タイトルは「全記事リスト」とか。

<div style="height:25em; overflow:auto; border:1px #CCCCCC inset;"> <MTEntries lastn="0">
<MTEntriesHeader>
<ul style="line-height:2em;">
</MTEntriesHeader>
<li style="line-height:1.2em;"><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a><small>[<$MTEntryDate format="%Y.%m.%d">]</small></li>
<MTEntriesFooter>
</ul>
</MTEntriesFooter>
</MTEntries>
</ul>
</div>

ブログの特徴としてRSSが挙げられます。新着情報を配信している書類と思ってください。RSSアイコンこんなようなアイコンがよく使われます。コレを適当な位置に表示して、クリック設定のリンク先を「http://www.ドメイン/news/atom.xml」。しつこいけど「ドメイン」って書かないように。自分が使っているドメインだからね。

この内容で、[適用]。

ブログ記事

[デザイン]→[テンプレート]を見てみよう。

「テンプレートの設定」で、ブログ記事のファイルへのリンクを「000posts.html」としておく。

2009bmp05.jpg

同時に、アーカイブマッピングは「%y%m%d-%h%n%x」。

BiNDを使う都合上、後の管理のためにこうなる。こうしておくことで、出力ファイル名が「年年年年月月日日-時時分分.html」という、日付8桁の数字-時刻4桁の数字のファイル名になる。

本来MT的には、年ディレクトリの中に月ディレクトリを作って、その中に記事を放り込むというやり方が主流のようですが、BiNDでテンプレートを作る都合で仕方がない。だから、同じディレクトリにずらーっとファイルを並べることを考えると、文字数が整っていて、できれば何かの順番(この場合は日時順)に並べておくと、後々になって混乱が少なくなるはず、と考えた。記事IDを使うという手段もあるけど、やりたい方法があるならそれでももちろんよいわけ。

BiND側では、ニュースTOPのファイルを複製。

ページ設定

ページ設定で、ページ名は何か自分でわかりやすいものに。ファイル名は「000post.html」。

BiNDでページのメインブロック以外を作り込む。といっても、最新の情報TOPとそれほど違うモノが必要なわけではない。

でも、まるっきり同じでは、見る方が混乱すると思います。たとえば

  • 最新情報TOPは、ビルボードに何かイメージ写真
  • 個別記事ページはビルボード無し

とか、どーですか。

メインブロックは、ブロックレイアウトを「左右違い」で「左広め」にして、広い左側には記事本文、狭い右側には記事一覧を書く、という同じ構成で勝手に推進します。

ヘッダ(↓ビルボードが無い)
記事本文(↑ビルボードが無い) 記事一覧
フッタ

カスタムタグ。内容は、さっきと全く同じでも大丈夫と思うけれども、見るヒトが混乱するのではないかと思われるため、ビミョーに違う。タイトルは「本文」とかわかりやすいもの。

<MTEntries>
<MTEntriesHeader>
<div class="hfeed">
</MTEntriesHeader>
<div id="entry-<mt:EntryID>">
<h3><$MTEntryTitle$></h3>
<ul>
<li class="published"><abbr title="<mt:EntryDate format_name="iso8601">"><$MTEntryDate format="%x"></abbr></li>
</ul>
<p>
<$MTEntryBody$>
</p>
</div>
<MTEntriesFooter>
</div>
</MTEntriesFooter>
</MTEntries>

[分割]して、またカスタムタグ。こっちは、まるっきり同じだから再掲載しない。タイトルは「記事リスト」。

あと、RSSアイコンもあった方がいいかもしれないし、ニュースのTOPにあればいいのかなー……、という気もしなくはない。

この内容で、取り敢えず[適用]。

ページ設定

「スクリプトと詳細設定」の窓に、ニュースTOPとはちょっと違う内容を書き込む。

<MTEntryPrevious>
<link rel="prev" href="<$MTEntryPermalink$>" title="<$MTEntryTitle encode_html="1"$>" />
</MTEntryPrevious>
<MTEntryNext>
<link rel="next" href="<$MTEntryPermalink$>" title="<$MTEntryTitle encode_html="1"$>" />
</MTEntryNext>
<script type="text/javascript" language="javascript" src="http://blog.photopierre.com/mtmt.js"></script>
<link rel="stylesheet" type="text/css" href="styles_add.css" />
<link rel="alternate" type="application/atom+xml" title="Recent Entries" href="<$mt:Link template="feed_recent"$>" />
<style> .mt-image-center {
display:block;
margin:1em auto;
}
.mt-image-left {
display:block;
float:left;
margin:1em 1em 1em 0;
}
.mt-image-right {
display:block; float:right;
margin:1em 0 1em 1em;
}
</style>

と言っても、思いつくのはこの程度。

その他、カレンダーを付けたいとか、余計なナビゲーションを付けたいとか、重くてもうざくてもブログパーツを貼り付けたいとかは、いろいろ研究してみてください。そうじゃなきゃおとなしくSYNCだな。

カスタムタグ内をもっと違う書き方して、テンプレートの構成ももうちょっと変えた方がサーバー負荷が軽くなったりもしますけれども、動かなねぇじゃねーか!! って文句言われたり質問されたりすると面倒なので、説明しない。

勝手ながら補足しますけれども、BiNDは、そもそも「自分のためのウェブサイトを自分で作る」というコンセプトのようで、あまり知られていないようですけれども2ライセンス使えます。というか、2台のコンピュータにインストールできます。この仕様は、たとえばオフィスのコンピュータに1ライセンス、自宅のコンピュータに1ライセンス、という使い方を想定してのことではないかと思われます。サイトのデータは、フラッシュメモリか何かで持ち歩けば、家でもオフィスでも更新作業ができらいねー、と。

でも、世の中が複雑になるにつれ、それじゃ足りないコトも増えてきたのも事実。だから、何か世の中に出回っているCMSを組み合わせて「最新情報」だけを効率よく配信できないものか、と考えたわけです。

【リンク】

【追記】2009.4.13
つい先ほど、BiND使用中に落ちて、再起動したらBiND2.5へのアップデイトが始まりました。さて、どうなることやら楽しみです♡ 取り敢えず、サイトモジュールが変更されますから、要バックアップ!!

【追記】2010.2

回り込みが解除できないなぁ、と嘆いていたら、なんと、BiNDが元々吐き出すCSSにこんな記述!

p    { clear:both; margin:0; padding:0;}

そりゃ、ねーぜ。って思ったら、CSSを作って読み込ませるしかない。


Posted in ウェブ関連
0 0 評価
Article Rating
ウォッチする
通知
2 Comments
インラインフィードバック数
すべてのコメントを表示

2.5にしてみて
結局SYNCは予想通りに好みに合わないものでした。
それにしても、
サイズ指定に融通ききませんけれども
SiGNは好きです。
SiGNなんてウェブアプリとして提供してもおもしろそう。

3になりましたが、腰抜けるような変化はないみたいです。

関連してるかもしれない記事