特定カテゴリの記事へのディープリンクを防止する MTDeepLinkBlocker 0.11

Posted by
ぴろり
Posted at
2005/08/19 23:43
Post Comment
コメントできます
Category
プラグイン カテゴリ
 先日公開しました MTDeepLinkBlocker をバージョンアップしました。 このバージョンアップにより、特定のカテゴリや記事の日付、コメント欄の有無などの条件において、 ディープリンク防止機構を有効にしたり無効にしたりできるようになりました。 このエントリでは、今回のバージョンアップで追加された機能を使用するための テンプレートの書き方を紹介しています。

 最新版は MTDeepLinkBlocker のページからダウンロードできます。どうぞご利用ください。

このエントリーをはてなブックマークに追加  

背景

 先日公開しました MTDeepLinkBlocker 0.10 は、記事へのディープリンク防止機構を実現しますが、 ブログに含まれる全ての記事をその対象としてしまうため、使いづらいという欠点があります。 多くのブログにおいて、ディープリンク防止策が必要な記事というものは、 例えばそれは、フレームを招きそうな話題を扱ったものであったり、 一過性の身内ネタ記事であったり、コメントを受付中の記事であったりと、 往々にして特定一部の記事に限られていることが多いと思います。

 本バージョン 0.11 では、ディープリンク防止機構を無効にする thru オプションが追加されました。 カテゴリ名などを条件にして thru オプションを有効にすることで、 特定のカテゴリにおいてのみディープリンク防止機構を働かせることができます。 これら条件の判定には、条件式に Perl の正規表現が使える Regex Plugin が便利です。カテゴリ名などのマッチングで効果を発揮するでしょう。 このプラグインについては drk7.jp:MovableType の正規表現プラグインに 日本語による説明がありますので、そちらも参照してください。 プラグインに添付の readme.txt には、他にも様々な使い方が紹介されていますが、 このエントリで紹介している例は drk7.jp の説明の範囲で十分に事足りるでしょう。

カテゴリ名による切り分け

 フレームを招きやすい内容(例えば、政治思想や宗教、批評批判などに関するもの)など、 特定のカテゴリに含まれる記事に限定してディープリンクを防止したい場合です。 このカテゴリ以外の記事へのディープリンクは自由に行うことができます。
 下の例では、カテゴリ名に "MovableType" という文字列が含まれる場合(MTIfMatches の内部)、 その記事へのディープリンク防止機構が有効になります。 それ以外の場合(MTIfNotMatches の内部)、MTUseDeepLinkBlocker に thru オプションを指定して、 ディープリンク防止機構の認証チェックを無条件で通過(=防止機構を無効)するようにしています。
<MTIfMatches var="EntryCategory" pattern="m/MovableType/i">
<MTUseDeepLinkBlocker>
</MTIfMatches>
<MTIfNotMatches var="EntryCategory" pattern="m/MovableType/i">
<MTUseDeepLinkBlocker thru="1">
</MTIfNotMatches>
<!-- ページの先頭行に MTUseDeepLinkBlocker を忘れずに置いてください -->

<body>

<MTDeepLinkDenied>
このページを直接表示することはできません。
インデックスページから辿ってください。
</MTDeepLinkDenied>

<MTDeepLinkProtected>
ここにディープリンクから保護されたコンテンツを記述します。
認証済みのユーザは、Cookie が有効な間のみ直接にリンクを辿ることができます。
また特定カテゴリ以外の場合は、認証チェック無し無条件に表示します。
</MTDeepLinkProtected>

</body>

コメント欄の有無による切り分け

 記事 URL の晒し上げ→直アクセス→コメント欄に即突撃の構図を懸念するなど、 コメント欄が公開されている記事へのディープリンクを防止したい場合です。 ディープリンク防止機構の切り替えには MTEntryIfCommentsOpen が使えます。
<MTEntryIfCommentsOpen>
<MTUseDeepLinkBlocker>
<MTElse>
<MTUseDeepLinkBlocker thru="1">
</MTElse>
</MTEntryIfCommentsOpen>
<!-- ページの先頭行に MTUseDeepLinkBlocker を忘れずに置いてください -->

<body>

<MTDeepLinkDenied>
このページを直接表示することはできません。
インデックスページから辿ってください。
</MTDeepLinkDenied>

<MTDeepLinkProtected>
ここにディープリンクから保護されたコンテンツを記述します。
認証済みのユーザは、Cookie が有効な間のみ直接にリンクを辿ることができます。
コメントを受付けていない場合は、チェックは行われず、無条件に表示します。
</MTDeepLinkProtected>

</body>

記事の投稿日による切り分け

 ある一定期間が経過した記事など、記事の投稿日時を基準に ディープリンクを許可/拒否したい場合が考えられます。 下は、記事の投稿年が 2005 年の場合にはディープリンク防止機構を有効にする例です。
<MTIfMatches var="EntryDate" pattern="m/2005/">
<MTUseDeepLinkBlocker>
</MTIfMatches>
<MTIfNotMatches var="EntryDate" pattern="m/2005/">
<MTUseDeepLinkBlocker thru="1">
</MTIfNotMatches>
<!-- ページの先頭行に MTUseDeepLinkBlocker を忘れずに置いてください -->

<body>

<MTDeepLinkDenied>
このページを直接表示することはできません。
インデックスページから辿ってください。
</MTDeepLinkDenied>

<MTDeepLinkProtected>
ここにディープリンクから保護されたコンテンツを記述します。
認証済みのユーザは、Cookie が有効な間のみ直接にリンクを辿ることができます。
投稿年が 2005 年以前の記事は、認証チェック無し無条件に表示します。
</MTDeepLinkProtected>

</body>

トラブルシュート - 困った時は?

この項目は現在、準備中です。
このエントリーをはてなブックマークに追加  



コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。