昨天晚上徹夜未眠,因為又在改程式了!!!
前幾天剛改好 slimbox wordpress plugin, 馬上就有人來發問,因為距離國考時間所剩無幾,原本無心多做回應,後來意外用 IE 測一下卻發現 javascript 似乎有問題,跑不起來。雖然在 Firefox, Opera 裡都正常,但要是 IE 這個市場主流軟體不能用,我的心血豈不就白費了!所以還是卯起來解決吧!
我測試的環境是用 Slimbox 附的 example page,很怪的是我明明用同一份程式,在測試頁裡跑起來 ok,搬到 blog 裡就會爛掉,實在是莫名其妙!後來發現原來是少宣告了一個變數,但這真的還是一件很莫名其妙的事。
理論上解決完這個 bug 後應該就可以去睡啦~我忽然又發現,我不小心用了第二個 flickr 帳號裡的照片了(捨不得買 Flickr Pro 只好多申請幾個帳號 :p),這樣原本偷吃步去抓 flickr url 的方法就失效啦!所以只好繼續修第二個 feature … (feature != bug) :p
Flickr 照片的 url 是由 owner 和 photo_id 組成的,例如:
可是在 Slimbox 裡用的格式必須是圖片本身的網址:
這是看不出 owner 資訊的,雖然 Flickr 有 API 可以用,但是想用 API 就會把自己的 key 散佈出去,假若不公佈 secret 碼,原則上其他人抓不到 token,應該也不會造成授權的問題,雖說畢竟也是有風險,但在沒有其他變通方式的情況下,也只好這麼做了,頂多是去申請一個專門拿來跑 api 的帳號就是。^^a
Flickr API 的官方網站裡並沒有提供給 javascript 用的版本,不過網路上已經有人做好了,搞懂它的用法,還順便幫他 debug 一下,最後還是因為不熟悉 javascript 的環境,無法繼續下去。這時剛好看到關於 JSON 的文件,便決定砍掉重練,自己弄個簡單版的,還可以精簡一些內容。
用 JSON 格式輸出的結果剛好會形成一個 object,在 javascript 裡用 eval() 就可以把它塞進一個自訂函數中,要處理網站回傳的資訊就簡單多了,花了一陣子弄清楚 object 結構後,卻又遇到一個問題:「抓不到 API 的網站!」
這是 javascript 先天的限制,怕人家到處去抓其他網站的內容來惡搞,所以和該 javascript 檔所在位置的 domain 不同的話就會爛掉,解決方法就是透過 proxy,Yahoo API 提供的方法是用 php proxy,順便也提供了簡單功能的版本,拿來用了之後,果然就成功了。
沒想到一個看起來好像不很複雜的功能做完時都已經天亮,老實說從初三要搭早班校車的年代畢業後,我不知道多久沒有看到西螺清晨的陽光了。
有時候執著於一件事,而後努力達成是一件很浪慢的事!但麵包和愛情之間的天平,還是得好好秤一秤才是比較成熟的做法吧!
Download: Slimbox WordPress Plugin v1.22, modified by tsaiid
ChangeLog
- 移除前一版 flickrUser 選項,改為自動偵測照片正確的 URL
- 預設將連回 Flickr 的連結在新視窗中開啟
Notice
- 因為採用 php proxy 以及額外的 Flickr API 函式,會導致程式效能降低,如果沒有連回 Flickr 這樣的需要者,建議使用原版的 plugin 即可
- 如果只會用到單一使用者的圖片,也就是說 flickrUser 固定者,建議使用前一版 v1.21 可以讓 Slimbox 更有效率的執行,也可以減少因 php proxy 造成的額外流量
Download: Slimbox WordPress Plugin v1.3.2, modified by tsaiid.
ChangeLog
- 根據原作者網頁之 1.3 版修改,可讓 wordpress 的自動更新閉嘴。XD
後續變動,請 follow 原本網頁。