top

nofollowプラグインを利用してコメントのリンク先を別窓で開く

確か以前はコメント投稿者のリンク先サイトは別窓で開いていたような気がするのですが、いつの間にか同窓でしか開かないようになっていたようです。

が、うちのMTはブログとしてだけでなく、CMSツールとしても使っており、メインサイトではフレーム内にMTを組み込むということをしています。そのままではコメントをいただいた人のサイトがフレーム内に開いてしまうので、別窓で開くようにする必要がありました。
コメント投稿者のサイトを別窓で開く方法はネットを探せばあちこちで見つかりますが、システムはあまり弄りたくない派なので、nofollowプラグインを利用することを思いつきました。

phpフォルダ内にあるpluginsフォルダを開きます。その中にあるinit.nofollow.phpというファイルをエディターで開き、67行目に赤字の部分を追加します。

function nofollowfy_cb($matches) {
$str = $matches[1];
preg_match_all('/[^=[:space:]]*\s*=\s*"[^"]*"|[^=[:space:]]*\s*=\s*\'[^\']*\'|[^=[:space:]]*\s*=[^[:space:]]*/', $str, $attr);
$rel_arr = preg_grep('/^rel\s*=/i', $attr[0]);
if (count($rel_arr) > 0)
$rel = array_pop($rel_arr);
if ($rel) {
$rel = preg_replace('/^(rel\s*=\s*[\'"]?)/i', '\1nofollow ', $rel);
} else {
$rel = 'rel="nofollow" target="_blank"';
}
$attr = preg_grep('/^rel\s*=/i', $attr[0], PREG_GREP_INVERT);
return '<a ' . join(' ', $attr) . ' ' . $rel . '>';
}

<注>この方法は多分ダイナミックパブリッシングを使っている場合にのみ有効だと思われます。
静的生成の人はpluginsフォルダ>nofollowフォルダ>nofollow.plを弄くってみるか(試したことがないので動作保証は出来ず)、検索等で別の方法を探して下さい。

<2006.11.6追記>
プラグインを改造しなくてもMTタグの記述のみでコメントのリンク先を別窓表示できる方法があることに気が付いたので、現在はそちらへ移行してます。その方法ならダイナミック・静的生成両方に使えます。