MDWikiについての情報をまとめる

お手軽に使えるMDWikiというものを試すために設置してみた。

特徴

  • HTML一枚で完結するWiki的な何か。という話だけど、正確に言うとMarkdownレンダラー。
  • DropboxのPublicフォルダにファイルを置くだけで公開できるのでお手軽に利用
  • ファイルの形式はMarkdownと呼ばれる形式。業界的にはデファクトになりつつある形式

使ってみた感想

  • あんまり複雑な書式だとブラウザが追いつかないっぽい。
  • まぁ、普通に作ってれば問題ないだろ
  • もちろん検索なんかはできないので、難儀するかも

Dropboxで公開するための簡単な手順

  1. 公式サイトから最新版をダウンロードする
  2. Dropboxの公開フォルダにフォルダごとをコピー
  3. 適当な内容のindex.mdをフォルダに作成
  4. mdwiki.htmlを右クリックし、「公開リンクをコピー」
  5. 公開リンクにアクセスする
  6. 先ほど作ったindex.mdの内容が表示されているはず

その後のカスタマイズなどは紹介記事を参考に対応する。ある時期から、Dropboxの公開フォルダはデフォルトで有効になっていないらしいので、その場合はDropbox の Public (パブリック)フォルダを有効にする方法を参考にすると良いかもしれない。

公式サイト、その他の紹介記事

MediaWikiでMarkdown形式で記述できるように変更する

やりたいことは表題の通り

失敗:Extension:AlternateSyntaxParserをインストールする

ざっと検索すると、Extension:AlternateSyntaxParserというのがみつかる。が、どうもこれは最近のMediaWikiには対応していない様子。使うと、以下の様なエラーが出て怒られる。
seh. MediaWiki1.18でAlternateSyntaxParserが使えない

PHP Fatal error: Call to a member function addMessage() on a non-object in [インストール先]/AlternateSyntaxParser/AlternateSyntaxParser.php on line 95

成功:Extension:MarkdownSyntaxをインストールする

仕方ないので、もう少し探すと別のExtentionが見つかるので、これをインストールする。
seh. Extension:MarkdownSyntax

この際の注意点は以下
・Markdownのライブラリのバージョン
・タイトルがMarkdonwとして解釈されてしまう

Markdownのライブラリのバージョン

インストール時に、別途Markdownのライブラリをインストールする必要がある
seh. php Markdown

この際、最新版のPHP Markdown Lib 1.3をインストールしてしまうと動かない。
ここはおとなしく「CLASSIC VERSION: PLUGIN FOR WORDPRESS, SMARTY, ETC.」の方をインストールする。

ついでにExtension:MarkdownSyntaxではExtra の方が使えないらしいので注意。

タイトルがMarkdonwとして解釈されてしまう

Extension:MarkdownSyntaxをインストールするとタイトルにPタグがついてしまう。これはどうもタイトルもMarkdownとして解釈してしまう → 一行のテキストはPタグとして変換 → そのままtitleタグに使われてしまう。という流れらしい。

対応するには、Extension:MarkdownSyntaxで対応するか、別の場所で対応するかの2択。
今回はExtension:MarkdownSyntaxで対応する

Extension:MarkdownSyntaxで対応する場合###

改行を含まないテキストの場合はMarkdownに変換しなければ良い
ただし、この方法で漏れがないかってのはよくわからない。

function wfProcessMarkdownSyntax($parser, $text) {
// 改行を含まない場合はMarkdownとして変換せずに終了
if(! preg_match("/[\r\n]/", $text) ) {
return true;
}

別の場所で対応する場合###

どうもMediaWikiでタイトル関連を扱っているのは以下のファイル
includes/OutputPagh.php, line 847

なので、ここでタグを除去してしまえばMarkdown関係なくタグが消える
ただし、タグ的なものがタイトルに含まれる場合があるときは問題

public function getHTMLTitle() {
return strip_tags($this->mHTMLtitle);
}