Joomla!ってとっても便利ですが、使い方はいろいろありますね。
もちろん、普通の使い方は当たり前で、それが目的のCMSであるわけですが・・・。先日Koshimaさんと話していて改めて、同じように使う方もやっぱりいるのだなと、実感しました。
ちょっと前から・・・かなり前と言われそうだが・・・新しいテンプレートを作成していますが、その中でmosimageって{mosimage}のタグを登録した画像順に表示してくれますよね。そのタグを自分で作成して登録したHTMLなり、Javascipt、CSSに置き換えてくれるコンポーネントとプラグイン。ありそうだったのでjoomla.orgで探してみたけど、限られた機能を持った物しかなさそうでした。実際にインストールまでして確認したわけではないので「それならあるよ。」って方は教えてください。プラグインだけでも実装できますが、数に限りがあるだろうし、管理しづらい。コンポーネントでタグを管理して、プラグインで置き換えます。
・・・て、もうJoomla!1.0.x用は新しいテンプレートで実装してたりしますが。
もうひとつCombineって命名して前に記事で書いたようにJavascriptとStyleSheetをまとめてくれるExtensionも実装してみたので新しいテンプレートに置き換えたらそれが、そのままテストになります。
近日中にテンプレートを変更します。(今より少しは良いだろう・・・たぶん。)
少し改造してみた。
各記事上の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ライブラリでないと無理でしたね。