読者です 読者をやめる 読者になる 読者になる

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);  
}