Sep 27
以下是在 PTT 的 PHP 板看到某篇文章後的心得,以及小小的經驗分享。
對 Smarty 稍有經驗的人,應該都知道樣板內可使用 {include} 這個 tag 來嵌入其他 template file。
然而,因為 Smarty 內的變數都是全域變數,所以我對這個 tag 的看法是「能不用,就不用」。
用常見的網站論壇系統舉個簡單的例子:
若 B 設計師在其 template file 中使用了 {include} 來嵌入 A 設計師的 template file,就可能會產生預期之外的顯示結果。
當然,若是開發團隊已事先溝通好各項變數的命名,就不會有這種情況。
但為了減少此類風險,降低 debug 的難度,我們會選擇使用這種方式:
- 在系統全域共用的函式檔案中增加負責顯示 HTML header 的 function,例如 function page_header($title) { ...} ,並在 function 中 assign 變數,引入 A 設計師開發的 template file。
- 在論壇文章內容顯示的程式檔中,呼叫 page_header($title),再 assign 文章標題的變數,引入 B 設計師開發的 template file。
當然,若嵌入的 template file 內沒有任何變數,就不須考量以上的狀況,開發/設計人員可以大膽地隨意使用。
Technorati Tags: include, PHP, Smarty
Tags:
include ,
PHP ,
Smarty
(Visited 3624 times)
Sep 09
昨晚,有個學長透過 MSN 問我有無簡單好用的 PHP 圖形驗證碼,又讓我想到 reCAPTCHA。
上一次使用時,reCAPTCHA 僅提供顏色變更;如今,reCAPTCHA 已經開始支援多國語言了。
剛才稍微玩了一下,寫了這個簡單的網頁。
reCAPTCHA 的多國語言化相關資訊可以參考 這裡,而我使用的中文化程式碼片段為:
<script type="text/javascript">
var RecaptchaOptions = {
custom_translations : {
visual_challenge : "取得圖形驗證碼",
audio_challenge : "取得音效驗證碼",
refresh_btn : "重新整理圖形",
instructions_visual : "輸入兩個英文單字:",
instructions_audio : "輸入您聽到的聲音:",
help_btn : "獲得協助",
play_again : "重新播放音效",
cant_hear_this : "將音效下載為 MP3",
incorrect_try_again : "錯誤! 請再試一次"
}
};
</script>
Technorati Tags: CAPTCHA, il8n, localization, PHP, reCAPTCHA
Tags:
CAPTCHA ,
il8n ,
localization ,
PHP ,
reCAPTCHA
(Visited 4164 times)
Sep 04
以往我撰寫 PHP 的兩個工具是 vim 跟 jEdit(vim 比較常用)。
當時會選 jEdit 是因為 jEdit 提供了 FTP 遠端存取的功能,更改或新增的程式檔可以自動上傳到遠端主機。
昨天在 PTT 的 PHP 板看到有人提到 Aptana Studio,今天想到就抓來玩看看。
令我驚豔的是,Aptana Studio 也提供了遠端存取的功能,包括 FTP、FTPS、SFTP,以及各種版本控制系統。
不過,試了一下之後,發現它沒有辦法自動讓更改或新增的程式檔上傳到遠端主機,只能儲存後,再手動作 upload。
在網路上搜尋解決方法後,我卻發現工具列上的 Scripts -> Synchronize -> Upload Current File On Save 是壞掉的。
在即將放棄使用 Aptana Studio 時,我發現了 這個討論串,而且也順利解決自動上傳的問題。
討論串的內容有點亂,所以把解法整理在這邊,順便幫自己留個備份(以免以後又要找解法):
- 在 Aptana Studio 安裝的資料夾找出 upload_current_file_on_save.js 這個檔案,並編輯它。
- 在 header 的部份補上這兩行:
Listener: commandService().addExecutionListener(this);
Key: M1+S
補完之後的 header 大概像這樣:
/* Listener: commandService().addExecutionListener(this);
* Currently an example script (disabled)> Copy as your own script, and modify
* the Listener command as shown below
*
* Menu: Synchronize > Upload Current File On Save
* Key: M1+S
* Kudos: Ingo Muschenetz
* License: EPL 1.0
* DOM: http://localhost/com.aptana.ide.syncing.doms
* DOM: http://download.eclipse.org/technology/dash/update/org.eclipse.eclipsemonkey.lang.javascript
*/
- 在檔案最後面補上這段:
function main() {
sync.uploadCurrentEditor();
}
- 存檔並重新執行 Aptana Studio。
之後只要按下 Ctrl + s 儲存檔案,該檔案就會自動上傳到遠端主機囉。
Technorati Tags: Aptana
Tags:
Aptana
(Visited 4051 times)
Recent Comments