Lightbox JS v2.0をPloneで使ってみたいなぁ

リミのチュートリアルにあんまり目新しい事が書いて無くて、少しがっかり気味で、故に超訳するのめんどくさいな~と思ったので、現実逃避することにしました。

ということでLightbox JS v2.0に挑戦です。Lightbox JSの方は簡単でした。やり方はたかのりさんの「アルバムを lightbox で表示」を参考にすればよいかと思います。よーし、おんなじふうにしてLightbox2を実現してやるぜーヾ(゜∀゜)/

しかしちょっと待てよ、と。アルバムだけLightboxというのもアレだし、そもそも自分はアルバムなんてつかわんし、画像にしても、ちゃんと見せたいものとそうでないものとか、大きいモノと小さいモノとかいろいろあるんだから、(ブログとか文書作成で)自分の望むモノだけをLightboxにできれば十分だよなぁ。ということで、rel="lightbox"は手書きでいくことにしようっと。

Lightbox2をPloneで使うときのポイントは、もともと「src="scriptaculous.js?load=effects"」としてエフェクトを読み込んでいる部分。

そもそも、scriptaculousは以下の機能を持つけれど

  • builder
  • effects
  • dragdrop
  • controls
  • slider

こいつらは「builder.js」とか「effects.js」とかバラバラのファイルになってて、scriptaculous.jsはこいつらを読み込んでいる親分である。Lightbox2では「effects.js」のみを利用するため、Lightbox2のサイトでは「src="scriptaculous.js?load=effects"」としている。

ただ「他のも全部読み込みたいぜ~」という時はただ単にscriptaculousのみを指定してやればいい。ということはわざわざ「src="scriptaculous.js?load=effects"」なんてしなくてもソースにscriptaculous.jsを指定すればそれでOKなのである。

それじゃあフツーに「scriptaculous.js」やら「effects.js」やらをportal_javascriptに登録すればよいかといえば、…。いかーん、いかん、いかんのである。なぜならportal_javascriptは、登録したjsファイルをまとめて束にしてしまうからである。

試しにZMIからportal_javascriptへ行き、「Merged JS Composition」というタブを見てみると次のようになっている。

マージされたJSたち

これはつまり、「register_function.js」や「cssQuery.js」や、他のjsたちを全部まとめて「ploneScripts0118.js」という一つのファイルにまとめているということですな。この機能はもちろんフツーはトラフィックの効率をよくしてくれるステキなことなんだけど、Lightbox2を利用するに当たってはイクナイことなのである。

何故これがいけないかというと、scriptaculous.jsは「builder」やら「effects」やらといった機能を名前で探しているからである。scriptaculousは「build.jsはどこかなぁ~」とか「effects.jsどこいったんだモルァ!」とかいった具合で探しているのに、マージされた状態では、周りにいるのは「ploneScripts1234.js」とかいった知らない人たちばかりである。そのためscriptaculousは「誰もいないやションボリ…」といった具合にすねてしまって機能を提供してくれないのである。

ということでLightbox2を使うためにはこやつらをマージさせないことが必要になる。マージさせなくするのは非常に簡単で、「Merging allowed?」のところのチェックをオフにするだけである(デフォルトではチェックが入っている)。

マージを許可しない

と、いうことで、手順メモメモ。

  1. Lightbox2のサイトへ行って、アーカイブをダウンロードしてくる
  2. 「lightbox.js」、「scriptaculous.js」、「effects.js」、「prototype.js」、「lightbox.css」、「blank.gif」、「close.gif」、「closelabel.gif」、「loading.gif」、「next.gif」、「nextlabel.gif」、「prev.gif」、「prevlabel.gif」を「portal_skins/custom」にガンガンぶちこむ
  3. 追加した「lightbox.css」の48, 53, 55行目あたりの画像の指定を修正する(「../images/」を削除)
  4. 追加した「lightbox.js」の62, 63行目あたりの画像の指定を修正する(「images/」を削除)
  5. portal_javascriptへ行き、「lightbox.js」、「scriptaculous.js」、「effects.js」、「prototype.js」を追加する(ただし「effects.js」は「Merging allowed?」のチェックをオフにする)
  6. portal_cssへ行き、「lightbox.css」を追加する

あとはエフェクトをかけたい画像リンクに「rel="lightbox"」を指定してやればできるハズですな!

# 強引な力業としてはメインテンプレートのJSスロットに

<script type="text/javascript" 
  tal:attributes="src string:$portal_url/scriptaculous.js?load=effects">
</script>

ていう感じにすればよいですかな。

試しに実家のこうちゃんの写真をLightbox2してみよう。

実家のこうちゃん

トラックバック用URL:
http://nagosui.org/Nagosui/COREBlog2/lightbox-2-on-plone/tbping
コメントを追加

下のフォームに記入してコメントを追加できます。平文テキスト形式。

(必須)
(必須)
(必須)
(Required)
Enter the word

このBlogについて
Plone, Zope, Pythonなどのトピックについてのメモです。
カテゴリ
Plone (98)
Plone Products (23)
COREBlog2 (31)
COREBlog1 (29)
ReadingCOREBlog (7)
Zope (66)
Turbogears (18)
Django (12)
Python (25)
Linux (30)
Nagosui (12)
Design (33)
Misc (48)
moblog (5)
最近のエントリ
浜松ブラスバンド定期演奏会2008 nyusuke 2008年11月24日
Glossy Horizontal Menuを使う nyusuke 2008年11月17日
第3回Python東海終了 nyusuke 2008年11月17日
Universalじゃない件 nyusuke 2008年11月15日
最近のコメント
Re:WebデザイナーのためのDjangoはじめの一歩 nyusuke 2007年06月01日
Re:WebデザイナーのためのDjangoはじめの一歩 pateo 2007年05月31日
Re:東海Python Workshop 01終了 nyusuke 2007年05月31日
Re:東海Python Workshop 01終了 kfuruhata 2007年05月30日