私は、ブログエディタ(ほぼ今は、Windows Live Writerのみ)を使って記事を投稿しているのでJoomla!1.0.xからある{ほにゃらら}適当な何か{/ほにゃらら}といったタグを書くプラグインというのは作成してこなかった。何せブログエディタでは、ほぼやりたいことをブログエディタ側でやってくれるからです。
公開はしていないが、Joomla!1.0.xの時タグを置き換えるものを作成したことがある。それはタグを登録しておけば、保存したHTMLなりに置き換えてくれるというものでした。その残骸が、一部の記事に残っていたりしますが、今は使っていませんというか、Joomla!1.5用のものは作成していません。でも、これもWindows Live Writerには、テキストテンプレートというプラグインがあって、登録しておくだけでその登録したテキストを挿入してくれます。それを使えば、わざわざプラグインなどを使わなくても良いし、作らなくても良い。
multiboxのプラグインをなかなか公開できずにいます。他のエクステンションもそうですが、まだこのサイト自身で使っているエクステンションのメンテが完全ではないのでなかなか手をまわせません。また、Joomla!1.5に完全に移行したいと考えてもいますので尚更です。昨日もサイト内の検索に今まで手を加えていなかった(忘れていた)ので検索結果のリンクが現在のシステムではサポートしていないリンクを吐き出すようになっていたものを修正したり、multiboxプラグインをすこし修正したりしているような状態です。
そんな中昨日こんな会話がありました。
少し改造してみた。
各記事上のPDFアイコンとE-Mailアイコンをクリックしてみてください。
GreyBoxを使って表示するようにしてみました。
変更は以下
Root/libraries/joomla/html/html.php
Line:110
return '<a href="'.$url.'" '.$attribs.'>'.$text.'</a>';
を
$base = substr(JURI::base(), 0, strlen(JURI::base()) - 1);
$regex = '/<img[^>]*alt="pdf"[^>]*\/>/i';
if(preg_match($regex, $text)){
$attribs = ' rel="gb_page_fs[]"';
$url = $base. $url;
}
$regex = '/<img[^>]*alt="E-mail"[^>]*\/>/i';
if(preg_match($regex, $text)){
$attribs = $attribs. ' rel="gb_page_center[480, 320]"';
$url = $base. $url;
}
return '<a href="'.$url.'" '.$attribs.'>'.$text.'</a>';
へ変更した。
これだけでは、常時GreyBoxのJavascriptは読み込まれない(プラグインには関係ない)のでテンプレートのheadセクションに以下を追加
<script type="text/javascript">var GB_ROOT_DIR = "<?brush:php; echo $this->baseurl ?>/plugins/content/greybox/"</script> <script type="text/javascript" src="/<?brush:php; echo $this->baseurl ?>/plugins/content/greybox/AJS.js"></script> <script type="text/javascript" src="/<?brush:php; echo $this->baseurl ?>/plugins/content/greybox/AJS_fx.js"></script> <script type="text/javascript" src="/<?brush:php; echo $this->baseurl ?>/plugins/content/greybox/gb_scripts.js"></script> <link href="/<?brush:php; echo $this->baseurl ?>/plugins/content/greybox/gb_styles.css" rel="stylesheet" type="text/css" />
これは、デフォルトのrhuk_milkywayテンプレートの場合です。
これによって常時GreyBoxのJavascriptがロードされるのでGreyBoxプラグインをインストールしている場合は、Output GreyBox.jsをNoに変更してください。

参考にGreyBoxを使ってみましたが、同様にLightBox、ThickBox、LightWindowなど他の画像表示のJavascriptにも応用できるでしょう。
HTMLが表示できるJavascriptライブラリでないと無理でしたね。