MovableType で自由にトピック立てできる掲示板を作る:MTBBS

Posted by
ぴろり
Posted at
2006/05/17 23:24
Trackbacks
関連記事 (0)
Comments
コメント (38)
Post Comment
コメントできます
Category
MovableType カテゴリ

 MovableType で本サイトとは別のブログにエントリを一つ作り、そのエントリのコメント欄を掲示板や一言 BBSとして利用する方法が広く使われているようです。しかし、この方法では返信されたコメントが時系列で一列に並んでしまうために、特定の話題について読むのが大変になります。
 もし、ビジタがトピックに応じて自由にエントリを立てることができれば、更に柔軟に、効果的に掲示板を運用することが可能になるのではないでしょうか? このエントリでは、これを実現する MovableType のための小さな CGI を紹介し、ビジタが自由にトピック立てできる掲示板の作成方法を紹介しています。

この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  

動作の概要

 MTBBSは、実行されるとMovableType管理画面経由せずに、MovableTypeに直接エントリを新規投稿するためのCGIです。CGI内部からMovableTypeの各種メソッドを呼び出し、これを実現しています。エントリ毎のコメント投稿フォームとは別に、新規トピック作成のためのフォームを用意し、そこからMTBBSを呼び出すようにします。

導入方法

  1. MovableType の管理画面から、掲示板として使用するブログを新規作成します
  2. ここで新規作成したブログのブログIDを控えておきます

    ブログIDはURLにある(MT のインストールパス)/mt.cgi?ほにゃらら&blog_id=XXXのXXX(数字)部分です

  3. 作成したブログに投稿できるユーザを設定し、そのユーザの投稿者IDを控えておきます

    投稿者IDはURLにある(MT のインストールパス)/mt.cgi?ほにゃらら&author_id=XXXのXXX(数字)部分です

  4. ダウンロードしたアーカイブを解凍します
  5. mtbbs-create-entry.cgiをエディタで開き、環境設定を行います(後述)
  6. mtbbs-create-entry.cgiをMovableTypeのインストールディレクトリ(mt.cgiと同じディレクトリ)にアップロードします
  7. mtbbs-create-entry.cgiがCGIとして動作するよう実行権限(700 or 755)を与えておきます
  8. 作成したブログのテンプレートを修正し、mtbbs-create-entry.cgiを呼び出します(後述)

MTBBSの環境設定

 使用の前に、mtbbs-create-entry.cgiを修正する必要があります。mtbbs-create-entry.cgiの動作設定は、ファイルの先頭付近に以下のような書式でまとめて記述してあります。これ以外の部分については触る必要はありません。

;# Initial status of newly posted entry.
use constant INIT_STATUS =>	MT::Entry::RELEASE();# Published
;#use constant INIT_STATUS =>	MT::Entry::HOLD();# Unpublished
BLOG_ID
 導入する際に控えておいたブログIDを指定します。新規トピックは、ここで指定されたブログに新規エントリとして作成されます。
AUTHOR_ID
 導入する際に控えておいた投稿者IDを指定します。新規トピックは、実際にはこの投稿者によって新規投稿されたエントリとして扱われます。BLOG_IDで指定されたブログに対して投稿権限を持っていなければなりません。
DEFAULT_CATEGORY_ID new
 新規トピックのカテゴリが指定されなかった場合、ここで指定されたカテゴリに投稿されます。MovableTypeのカテゴリ管理画面から、カテゴリIDを控えておきます。undefを指定すると、カテゴリは設定されません。

プライマリカテゴリのみ設定できます。複数のカテゴリを設定することはできません。

INIT_STATUS
 新規トピックの初期の公開状態です。"公開"(MT::Entry::RELEASE())または"下書き"(MT::Entry::HOLD())を指定します。"下書き"の場合は、ブログ管理者が手作業で新規トピックを承認(下書き状態のエントリを公開に変更)する必要があります。
DEFAULT_ALLOW_COMMENTSnew
 新規トピックのコメントの受付け状態を指定します。通常は 1 を設定し、変更の必要はありません。
URL_ERROR
 処理中にプログラム内部でエラーが発生した場合にリダイレクトされるページのURLを指定します。undef を指定した場合、CGIのエラー画面が表示されます。
URL_IPBANNED
 新規トピックの要求があったリモートホストが、MovableTypeの拒否IPリストにあった場合、リダイレクトされるページのURLを指定します。undef を指定した場合、CGIのエラー画面が表示されます。
URL_SUCCEED
 新規トピックが正常に作成された場合にリダイレクトされるページのURLを指定します。
CHECK_EMPTY_TITLE
CHECK_EMPTY_TEXT
CHECK_EMPTY_TEXT_MORE
CHECK_EMPTY_EXCERPT
CHECK_EMPTY_KEYWORDS
 順に、タイトル、本文(body)、追記(extend)、概要、キーワードについて、 パラメータに1を指定すると、そのフィールドをチェックし、空欄の場合にエラーとします。
CHECK_EMPTY_CATEGORY new
 トピック立てされる時に、カテゴリ指定を強制します。

MTBBSの使い方

 掲示板として使用するブログで、ビジタが新規トピックを立てるためのフォームを用意します。

<h1>新規トピックを作成する</h1>
<form method="post" action="<$MTCGIPath$>mtbbs-create-entry.cgi">
タイトル:<input type="text" name="title"><br />
名前:<input type="text" name="text_more"><br />
本文:<textarea name="text">&lt;/textarea>

<!--カテゴリを選んでトピック立てできるよう選択リストを表示する(オプション)-->
<select name="category">
<option value="0">▼ カテゴリを選んでください
<MTCategories>
<option value="<$MTCategoryID$>"><$MTCategoryLabel encode_html="1"$>
</MTCategories>
</select>

<input type="submit" value="トピック作成">

</form>

 それぞれのフィールド名と、MovableTypeのエントリの対応は次の通りです。どのフィールドをどの用途に使うかは自由ですが、掲示板デザインで使用したテンプレートタグと合わせておく必要があります。

 例えば、トピック立てしたユーザの名前をtext_moreフィールドとした場合、テンプレートタグには「投稿者:<$MTEntryMore$>」と書く必要があります。

フォームのフィールド名対応するMovableTypeのフィールド
titleタイトル
textエントリーの内容(body)
text_more追記(extend)
excerpt概要(excerpt)
keywordsキーワード
category newプライマリカテゴリ

MTBBS使用上の注意

  • MovableTypeへのログインユーザ名やログインパスワードは使用していません
  • mtbbs-create-entry.cgi に渡されたデータはサニタイズされません
  • テンプレートタグを用いてフィールドの内容を出力する時点で、encode_htmlを用いるなどして必ず安全にしてください

    トピックの内容などに悪意のあるJavaScriptを埋め込まれる危険性があります。 そのまま書き出すとXSS脆弱性となります。

  • MTBBSでは連続投稿の規制などを行っていませんので、 それを悪戯に悪用される可能性があります
  • MTBBSだけで使用する投稿者を用意しておくのが安全です

MTBBSを便利に使うためのヒント

  • 新しくコメントされた順にトピックを並べるなどの方法は、MovableTypeのテンプレートタグで対応します
  • 一つのトピック(エントリ)に付いたコメントが多くなる場合などには、 MTPagenate プラグイン を使ったページ分割が便利です
  • MTCommentTree プラグインと併用すれば、 スレッド掲示板を作ることも可能です
  • 掲示板でありながら、トピック毎にトラックバックを受信できるなど、新しい使い方が考えられます
  • 掲示板の新着コメントをRSSで配信するなんて使い方が考えられます

トラブルシューティング

本文・追記が <p> タグで囲まれてしまう
 MovableType の仕様で、エントリの改行設定が"改行を変換する"に設定されている場合に発生します。 スタイルシートを使って、マージンを 0 に指定するなどして回避してください。

その他

ダウンロード

 MTBBSをダウンロードできます。

MTBBS  new

ver.0.20, '06/05/19, 0butes, MovableType 3.2ja2 で動作確認
  • カテゴリを指定してトピック立てできるようにしました
  • トピックのコメント受付け設定を上書きするようにしました
この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  


この記事のアーカイブ

全ての記事 »
2006年
全てのカテゴリ »
MovableType
全てのタグ »
, ,

関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

寄せられたコメント (全 38 件中、最新 5 件まで表示しています)

Posted by
kazukazu
at
2013/05/02 11:22
ID
SIjoxRzE
初めて投稿します。
こちらのCGIの機能が使いたく導入してみたのですが、投稿すると文字化けになってしまいます。
再構築を行うと文字化けは直るのですが、何が原因かよくわかりません。
文字コードはUTF-8で統一してます。MTのバージョンは4.38です。
よろしくお願いします。
Posted by
kmorkmor
at
2012/05/29 15:05
ID
.7qVLl72
すいません、こちらのプラグインはMT5系で使用できますでしょうか。
MT5のコミュニティ掲示板機能ではトピックの投稿にユーザ登録が必要になってしまうので、このプラグインを使用できればと考えています。
Posted by
SayakaSayaka
at
2011/01/14 14:01
ID
Rnd29cuI
2010/09/15 09:46 のtoshiさんの質問とかぶってしまうのですが、
投稿しようとするとMTのログイン画面になってしまいます。
use constant INIT_STATUS =>MT::Entry::RELEASE();# Published
上記の設定は行ったのですが、
他にどのようにしたらいいでしょうか?
MTほぼ初心者です。
宜しくお願いします。
Posted by
toshitoshi
at
2010/09/15 15:42
ID
gm/z/cTE
たびたび、すみません。解決しました。
なかなか面白いツールですね。試してます。
Posted by
toshitoshi
at
2010/09/15 09:50
ID
gm/z/cTE
追記です。
今投稿してみると、post-komment.cgi になるようですが、
私のMTにはpost-komment.cgi がないようです。
たぶん、これのせいでしょうか??

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。