PowerCMS™
[ブログ] PowerCMS 6 でのアップデートまとめ を追加しました。
[新着情報] PowerCMSクラウド 月額費用の価格改定に関する追加情報を公開します を追加しました。
[よくあるご質問] サポートサイトへ登録しているアカウントの情報を変更することはできますか? を追加しました。
[新着情報] PHP 8.2 に対応した PowerCMS 6.5 の提供を開始 を追加しました。

PowerCMS ブログ

ホーム > PowerCMS ブログ > プラグイン > MTCommentBody タグの autolink モディファイアを、他の MT タグでも利用可能…

2017年02月10日

MTCommentBody タグの autolink モディファイアを、他の MT タグでも利用可能にする AutolinkModifier プラグイン

MTCommentBody タグには、コメント内に記述されている URL を自動的にリンクに変換してくれる、便利な autolink モディファイアというものがあります。

ただ、この autolink モディファイアは残念ながらグローバル・モディファイアではないので、他の MT タグでは利用できません。

そこで、今回はその autolink モディファイアの機能をグローバル・モディファイアにして、他の MT タグでも使っちゃおうという記事になります。

_autolink モディファイアを利用してみる

早速ですが、AutolinkModifier というグローバル・モディファイアプラグインを作成しました。

こちらのプラグインを設置すると _autolink モディファイアが利用出来るようになります。
(モディファイア名が重複しない様にアンダースコアを付与しています。)

下記の様に記述したテンプレートを再構築すると、後述の通り URL がリンクに置き換わります。

サンプル MTML

_autolink モディファイアを利用するには、値に '1' を設定してください。

<MTSetVarBlock name="text">
<p>PowerCMS - カスタマイズする CMS。 http://www.powercms.jp</p>
<p><a href="http://www.powercms.jp">PowerCMS - カスタマイズする CMS。</a></p>
</MTSetVarBlock>

<$MTVar name="text" _autolink="1"$>

出力される HTML

<p>PowerCMS - カスタマイズする CMS。 <a href="http://www.powercms.jp">http://www.powercms.jp</a></p>
<p><a href="http://www.powercms.jp">PowerCMS - カスタマイズする CMS。</a></p>
  • ※ 上記では説明の為にわざわざ MT 変数を定義して利用していますが、もちろん MTEntryBody 等の MT タグにも利用できます。
  • ※ 元からある <a href="http://www.powercms.jp"> は置き換わらないのもポイントの一つです。

_autolink モディファイアが利用出来ると嬉しいケース

今回の元ネタになっている MTCommentBody タグの様に、『HTML の入力は想定していないが、URL が記載される可能性がある』フィールドに対して設定すると便利だと思います。

例えばですが、PowerCMS のテンプートを実装する際には、実際に運用するユーザの負担を減らす為にカスタムフィールドを作成すると思います。

その際に作成するカスタムフィールドの種類には、PowerCMS の機能である『カスタムフィールド Pro』を利用する事で選択可能になる『エディタ付きテキスト』もありますが、作成する目的(運用するユーザのリテラシーのレベルに合わせる場合等)によってはあえてプレーンのテキストフィールドを選択する方が良い場面もあると思います。

『プレーンテキストでも URL はリンクにしたい』。。。はい!そこで今回の _autolink モディファイアの出番です!

MTCommentBody タグの autolink モディファイアがグローバル・モディファイアではない理由(を想像する)

そもそも MTCommentBody タグではデフォルトで sanitize モディファイアが有効になっています。
ですので、例えばコメント投稿者が <a> タグを入力しても、そのタグは除去されてリンクを表示することが出来ない仕様になっています(明示的に sanitize モディファイアを設定することや、環境変数 GlobalSanitizeSpec を設定することで変更することは可能です)。

その為、デフォルトで sanitize モディファイアが有効になっていない他の MT タグでは想定外の HTML が出力される可能性がある為、MTCommentBody タグ固有のモディファイアになっているのかもしれません。

今回の AutolinkModifier プラグインを利用される時は、前述の理由も頭の片隅に置きながらご利用いただければと思います。


カテゴリー
プラグイン
技術情報
投稿者
たはかし

Recent Entries