[Source] MyMiniCity Widget

從這個 widget 寫完到現在也一個禮拜了,沒想到當初這個隨便寫寫的東西這麼受歡迎 orz

原本打算再加上一些功能,例如像是這個日本人做的 widget,可以改擷取 Flash 部分區塊轉成圖檔的方式,讓整體的速度不會被 flash 拖慢。另外,留言板的訊息如果可以整進來應該也滿有趣的。

這個程式當初寫的很隨便,所以我也沒打算補註解,如果有問題 (應該是不會有 XD),歡迎 mail / twitter 討論。

Project Home

你可以透過 SVN 下載最新的程式碼:

CODE:
  1. svn checkout http://myminicity-widgets.googlecode.com/svn/trunk/ myminicity-widgets-read-only

ps. 把程式碼丟出來不表示我不會繼續改,不過我 PHP 功力不深,希望有更多好手能一起來玩 XD

[Widget] MyMiniCity 我的小城市

特別感謝名單:(依照 ID 排序)
bibicall 協助 icon 去背
ivanuston & Kirin Lin 協助多語系發展
We4You 提供俄語語系檔

目前提供:正體中文(zhTW)、英文(enUS)、日文(ja)、俄語(ru) 四種語言版本

--- 1/10 widget 語法修正通知 ---

因應 IE 在 document.write 上的執行順序問題,造成 IE 無法看見 Flash 的問題,請大家修改語法如下 (底下的範例亦同步更正):

CODE:
  1. <script type="text/javascript" src="http://widgets.evenrain.net/swfobject.js"></script>
  2. <script src="http://widgets.evenrain.net/myminicity.php?city=yourcityname" type="text/javascript" charset="UTF-8"></script>

--- 以下是正文 ---

前幾天在 twitter 上看到許多人在討論 MyMiniCity。號稱不需要註冊、不需要下載,只需要依靠網友的點擊就可以發展你的小城市。說真格的,我也不知道好玩在哪裡,不過看自己的城市慢慢發展起來感覺也滿有趣的,於是我也去申請了一個

由於需要網友點擊,而且每人每天只能點一次連結1,所以需要容易廣播的管道。依稀記得好像有人提到如果有 widget 可以放在 blog 邊欄會更容易 promote 些,於是我興起了動手寫寫看的念頭。

實際的成果大概如上圖 (或是看邊欄上的)。最上端會顯示城市的名稱,接著是縮小的 Flash 與城市的各項數值,最底下則隨著人口數會有增加居民、興建工廠、發展交通網、擴張警力、興建公園等連結圖示。目前的問題是,在網站上找不到發展商業的圖案,所以這個連結還沒有放上去 1/8 16:00 Update:已修正。要把這個 widget 放到你的 blog 只需要加入下面這行 code 到你的邊欄 (或是任何可以放 Javascript 的地方,記得改 cityname):

CODE:
  1. <script type="text/javascript" src="http://widgets.evenrain.net/swfobject.js"></script>
  2. <script src="http://widgets.evenrain.net/myminicity.php?city=yourcityname" type="text/javascript" charset="UTF-8"></script>

我覺得程式需要改進的地方還滿多的,例如提供更多的客製選項,而且我實際撰寫 PHP 才半年,所以有 bug 是正常的 XD。歡迎大家測試並提供建議喔。

1/7 Update: 進階用法

CODE:
  1. <script type="text/javascript" src="http://widgets.evenrain.net/swfobject.js"></script>
  2. <script src="http://widgets.evenrain.net/myminicity.php?city=yourcityname&width=165&f1=14&c1=ffffff&bg1=9dc55e&f2=12&c2=000000&bg2=c9fd79" type="text/javascript" charset="UTF-8"></script>

只有 city 是必要參數,只需加上你要修改的參數即可,例如:

CODE:
  1. <script type="text/javascript" src="http://widgets.evenrain.net/swfobject.js"></script>
  2. <script src="http://widgets.evenrain.net/myminicity.php?city=yourcityname&width=300&c2=ff0000" type="text/javascript" charset="UTF-8"></script>

參數說明:

  • city:城市名稱 (必要參數)
  • width:widget 寬度 (數字就好,單位為 px,預設 165)
  • f1:標題的字體大小 (數字就好,單位為 px,預設 14)
  • c1:標題的字體顏色 (不需加 #,預設為 ffffff)
  • bg1:標題的背景色 (不需加 #,預設為 9dc55e)
  • f2:數據的字體大小 (數字就好,單位為 px,預設 12)
  • c2:數據的字體顏色 (不需加 #,預設為 000000)
  • bg2:數據的背景色 (不需加 #,預設為 c9fd79)

你會發現改完後,圖示那邊的背景還是 c9fd79,這是因為 icon 我沒有去背(我也不會),所以...XD 1/7 11:50 Update: 感謝 bibicall 幫忙去背,現在會跟著 bg2 改顏色了。

如果你會改 CSS 的話,也可以看 source 去改,在這我就不多做說明了 :p

1/8 Update:
新增語系參數 lang,繁體中文不需此參數,英文加上 lang=enUS、日文加上 lang=ja 即可。

1/10 Update:
增加兩參數 s 與 m
s=1 時,底部會顯示 powered by evenrain myminicity-widgets
m=1 時,flash 上方會顯示最近的城市新聞 (此功能目前僅提供給正體中文語系使用者,事件的日期已改為台灣時間)

CODE:
  1. <script type="text/javascript" src="http://widgets.evenrain.net/swfobject.js"></script>
  2. <script src="http://widgets.evenrain.net/myminicity.php?city=yourcityname&s=1&m=1" type="text/javascript" charset="UTF-8"></script>

請參照 sidebar 上的範例。

1/21 Update:
新增參數 tr。當 tr 為 1 時, Flash 會加上 wmode = transparent

1/27 Update:
新增俄語語系,lang=ru

1/29 Update:
新增參數 tz & df,可變更城市新聞時間的時區與時間格式,詳見專案頁面

  1. 隨著人口數的增加,會有更多連結供不同目的的發展 []

變聰明的垃圾迴響?

今天在後台要刪除垃圾迴響的時候,看到了跟平常不同的訊息。雖然人工判定還是立即知道是 SPAM,但這種新型態的 SPAM 顯然是針對某些只檢查迴響裡面是否含有中文(或非英文)的檢查程式而來,因為它應該是是抓取文章的標題並濾掉英文的部份當成是迴響一部份內容。很可惜的是仍被 WP 的 Akismet 給擋住了。

上方的截圖說明是用 Firefox 的 FireShot 這個 Addons 做出來的。

WordPress 2.2 上使用 Sidebar Module 的解法

先前提過,由於 2.2 版內建 Sidebar Widgets,使得 Sidebar Module 會無法運作,而解決方案是安裝 Disable WordPress Widgets plugin

但是實際安裝後,會發現在後台新增或修改時會出現「You must specify a valid module name」的錯誤訊息。求教於天佑後,他找出了解法

原來除了安裝 Disable WordPress Widgets plugin 外,如果不是用 K2 模板 (像我) 的,因為獨立版本的 SBM 很久沒更新了,所以要先去下載最新穩定版本的 K2 (目前是 0.95 RC1)。然後解開下載的壓縮檔後,將 js 資料夾內的 sbm.js.php 上傳至 SBM Plugin 目錄內的 js 資料夾。

接著,修改 SBM plugin 資料夾內的 sbm.php,將

PHP:
  1. <script type="text/javascript" src="&lt;?php SBM::output_url(); ?&gt;/js/sbm.js"></script>

修改為

PHP:
  1. <script type="text/javascript" src="&lt;?php SBM::output_url(); ?&gt;/js/sbm.js.php"></script>

即可,在此謝謝天佑 :)