レ点腫瘍学ノート

Top / pukiwikiカスタマイズ箇所 / 自作プラグイン

markdown.inc.php

pukiwiki markdown

GitHub - m0370/pukiwiki_markdown.inc.php: Pukiwiki Markdownプラグイン
Pukiwiki Markdownプラグイン. Contribute to m0370/pukiwiki_markdown.inc.php development by creating an account on GitHub.
https://github.com/m0370/pukiwiki_markdown.inc.php

PukiwikiでMarkdownを使用可能にするプラグインsonotsさんが作成されたものが有名ですが、これはPHP 8.0に対応していないためにPukiwiki 1.5.4では使用できませんでした。そこではいふんさんがこれをPHPに対応させたver1.21を作成してくれて、それがPHP 8.0で使用できるようになっています。

Downloading File /users/37/37376/markdown.inc.php - OSDN
Free download page for Project pukiwiki's markdown.inc.php.This project has not yet submitted a description.
https://osdn.net/downloads/users/37/37376/markdown.inc.php/

しかし、sonotsさんのMarkdownプラグインは本当に純粋にテキストをMarkdown parser(Michelf/markdown)に投げているので、このMarkdown記法の中ではPukiwikiプラグインは使用できません。

ところで、先日Pukiwiki 1.5.3を無理やりMarkdown対応する改造をしているうちに、Michelf版ではなくerusev版を使っていること、またこの無理やり改造のなかで #plugin という表記法ではなく !plugin という表記法に変えることでMarkdownの見出し表記とPukiwikiプラグインを共存している方法があることに気がつきました。そこで、これを組み合わせればsonotsさんのMarkdownプラグインを使いながら !plugin の表記法にすることでPukiwikiプラグインも使用できるのでは?と考えました。

参考記事

Pukiwiki 1.5.3も無理やりMarkdown化した - レ点腫瘍学ノート
pukiwiki markdown もともとpukiwiki 1.5.0を無理やりMarkdown対応したという記事がqiitaにありました。確かにタイトルにあるとおり無理やり腕力でMarkdownにしたものなのでやや強引な感じは否めませんが、非常に興味深いものです。Pukiwikiを無理やりMarkdown記法に変えてみた
https://oncologynote.jp/?2a74686299

Pukiwiki式もMarkdown式もリンクが使える

さらに、Markdown parserにかける前のテキストをhtmlsc() に投げるかどうかでPukiwiki方式のリンクが使えるかMarkdown式のリンクが使えるかが切り替わることがわかったので、強引にMarkdown式のリンクをPukiwiki式のリンクに書き換える一文を挟み込むことでいずれの書式でリンクを書いても使えるようになりました。

Markdown parserはMichelfでもerusevでも使える

Markdown parserはどれをつかっても大差はないのですが、sonotsさんのオリジナルはMichelf/markdownのMarkdown parserを使っていて、今回はerusev/markdownも使えるようにしています。erusev/markdownのほうが改行が反映されるオプションを設定しやすく、また(セーフモードをfalseにすれば)RAW HTMLも使いやすくなっているので、個人的にはerusev/markdownのほうが好みです。ただし、個人または限られた人物のみが使用する場合以外はerusev/markdownを使用する場合はMarkdown parserのセーフモードをオンにするほうが良いでしょう。

設置方法

Release v1.22 · m0370/pukiwiki_markdown.inc.php
PHP 8.0対応、Pukiwiki 1.5.3および1.5.4RCで動作確認済 Pukiwiki式もMarkdown式もリンクが使える Markdown parserはMichelfでもerusevでも使える
https://github.com/m0370/pukiwiki_markdown.inc.php/releases/tag/v1.22

Michelf版を使用するとき

erusev版を使用するとき

erusev版不特定多数が使用できるような場合はセーフモードまたはHTMLエスケープモードの設定をしておく方が望ましい。markdown.inc.phpの49行目の $result = $parsedown ->setBreaksEnabled(true) ->text($body); が設定を記載する場所です。詳しくは公式サイトのtutorialをご覧ください。

GitHub - erusev/parsedown: Better Markdown Parser in PHP
Better Markdown Parser in PHP. Contribute to erusev/parsedown development by creating an account on GitHub.
https://github.com/erusev/parsedown

$result = $parsedown ->setSafeMode(true) ->setBreaksEnabled(true) ->text($body);

書き方

基本的にsonotsさんのオリジナルと同じです。

ただし、事前にpukiwiki.ini.phpで define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 0); の設定が0(つまり複数行プラグインを使用可能)になっていることを確認します。

この記事に対するコメント

このページには、まだコメントはありません。

お名前:

更新日:2021-12-30 閲覧数:422 views.