Drupalでマルチブログ

Drupalにはデフォルトでblogモジュールがあって、ユーザー毎のブログを構築できるのですが、工夫次第で、ユーザー毎にテンプレートを変えたり、かなり本格的なマルチブログにすることが可能と分りました。

デモサイトで一部実現させていますので、ご覧ください。ユーザー別ブログページ、例えばこのページは、デフォルトのままだと、アバターはノード毎に繰り返し表示され、カッコ良くないのですが、アバターをひとつにまとめました。

またURLを"ルート/blogs/ユーザー名"とし、投稿毎のパーマリンクは"ルート/blog/ユーザー名/node番号"にしてみました。

とりあえずアバターだけの対応ですが、工夫次第ではユーザーがCSSをアップロードすることにより、ユーザー毎にオリジナルデザインのブログ、ということも可能になるはずです。

では制作方法です。

まず、モジュールとしては、pathautoという極めて優れもののモジュールがあります。コアモジュールにpathというモジュールがあるのですが、pathautoで、コンテンツタイプ毎に自動的にエイリアスを設定してくれます。その際、tokenというモジュールが必要になります。このtokenというモジュールもありがたいモジュールで、ノードのタイトルや投稿者名などを自動的に抽出してくれるものです。

pathautoの設定で、上述のように、コンテンツタイプ毎の一覧出力ページやパーマリンクのURLエイリアスを設定できます。

次に、このURLエイリアスにテンプレートを効かせるようにします。こちらのスニペットをtemplate.phpに追加します。これでpathautoで設定したURLエイリアスに対し、例えばblogsというディレクトリ内のページに対するテンプレートとしてpage-blogs.tpl.phpを作成します。殆どの場合、page.tpl.phpをコピーして一部分だけカスタマイズすることで十分だと思います。

投稿者のアバターをページに表示する場合、ノードの変数をページに引っ張ってくる必要があります。

if ( arg(0) == 'blog' && is_numeric(arg(1)) ) {
$account = user_load(array('uid' => arg(1)));
print theme('user_picture', $account);
}

参考

このスニペットで動くはずです。

pathautoとテンプレートの組合せは、大きな可能性を生み出してくれる手法だと思います。