markdown のPタグの改行を簡単にする校正オプション p_nl2br を作ってみる


markdown の記法で p の中で改行をしたいときには、行末に(半角スペース)+(半角スペース)+(改行)という半角スペースを2つ入れる必要があります。これを知らない人って多いんじゃないのではないかと思います。

普通にテキストユニットで「markdown」を指定すると

あああ
いいいい
うう

が、

あああ いいいい うう

という表示になります。

個人的には、半角スペースを2つ入れればいいので普通の仕様でもいいのですが、入力したままのカタチで改行も表現されると、お客様に提供する際には使ってもらえる設定になるんじゃないかと思います。

これを実現できるようにカスタマイズする方法を書いてみたいと思います。

校正オプション「p_nl2br」を作る

/php/ACMS/User/Corrector.php に、以下のよう追記します。これでユーザー作成の校正オプションを追加できます。 これは、pタグの中の改行を br にするものなので、これだけで使っても意味がありません。

    public static function p_nl2br($txt)
    {
        return preg_replace_callback(
        '/<p>(.*?)<\/p>/s',
        function ($matches) {
            return nl2br($matches[0],false);
        },
        $txt);
    }

テキストユニットの markdown を改良する

/themes/自分のテーマ/include/unit.html (無い時には system のをコピー)の markdown ブロック部分を以下のように修正します。

<!-- BEGIN markdown -->
{text}[markdown|p_nl2br]
<!-- END markdown -->

ユニット設定を変更してみる

(エントリー作成)ボタンや、(テキスト)追加ボタンをクリックすると、テキストユニットが現れますが、初期は p(段落)になっているかと思います。これを コンフィグ > ユニット設定 を変更することで初期値の変更が可能です。



誰にでもオススメという設定ではありませんが、ココで初期設定が変更できるというところを知ってもらう意味で紹介しておきます。

これで、p タグの中に改行コードを br にすることができるようになります。

同じタグ付けがされている記事