携帯Google Mapモジュールのデモをdemo.joomler.netで以前から公開していますが、自分では全く見ていません。先日ふと見てみると「友達に送る」リンククリックで件名が文字化けしているは、URLがURIだし、こりゃ駄目だと。いつの間にそうなったのだろうとふと考えてみるとサーバー移転時にURIの部分を変更しなおしたことを思い出しました。
で、ひとつ間違いを発見。80Codeサーバーでの設定でuri.phpをHackした部分にさらに変更を加えないとだめです。(まあ、考えてみれば当然なのですが今まで不都合なかったので・・・)
$uri =& JURI::getInstance();
パスしか返さないJURI::base()を参照するのはおかしいのでこのように変更しました。
※80Codeサーバーでのみなので他のサーバーでは必要ありません。もしかしたらうちだけかもしれないけど。
・・・でも、これが正解のような気がしないでもない・・・。
件名が文字化けすることは、以前に何度も確認したつもりでDocomoの時だけSJISにするようにしていてOKだったのですが、うちのauでも文字化けするようになってました。(なんでかな・・・)
で、SJISに変換するようにしたらOKでした。
少し改造してみた。
各記事上の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ライブラリでないと無理でしたね。