啟動 Ubuntu 下的 Apache mod rewrite 與相關設定

Written by Simon Asika on

一般來說安裝完 Ubuntu 與 LAMP Server 後,Apache mod_rewrite 預設是沒有啟動的,若我們要啟動它,需要依照以下方法來設定。

首先輸入指令啟動rewrite mod

# sudo a2enmod rewrite

或是用自定link的方式來啟動

# sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load

Joomla! 套件開發的線上 xml 更新機制

Written by Simon Asika on

Joomla! 1.6 之後,便提供了開發者與使用者方變得套件更新機制。但由於相關更新機制都是由 xml manifest 檔來判斷的,在官方教學資源不夠完善的情況下,剛開始開發很難入門。


快速轉換 MySQL latin1 編碼為 utf-8

Written by Simon Asika on

老舊版本的 Mysql4 資料庫或 Joomla! 1.0 時代,常常會見到 latin1 編碼的資料表,在phpMyAdmin上觀看是亂碼,匯出.sql檔後也是一團糟,但網站本身卻可正常讀取。

這是因為資料表雖然設定為latin1,但網站還是utf-8的資料。 因此MySql以latin1來儲存utf-8編碼的文字,讀取時也用latin1讀取,所以會正常還原為原本的資料。

 

當資料庫轉移要解決這問題時,我們就需要用到 mysqldump 來處理了。

 

指令只需要這樣下:

mysqldump -u {username} -p{password} {database} > {file_name}.sql --default-character-set=latin1

就能成功用latin1導出原本是utf-8的資料,此時用文件打開就能看到正常的文字了。(要注意,-p與密碼之間無空格,但-u與帳號名稱之間有空格)

範例:

mysqldump -u root -p12345678 database > database.sql --default-character-set=latin1

Windows 下的 mysqldump 在 mysql / bin 下面,用cmd即可操作

範例:

C:\AppServ\mysql\bin\mysqldump -u root -p12345678 database > database.sql --default-character-set=latin1

database.sql 會產生到你操作當下鎖在的目錄。


Joomla!1.6 的元件 render 過程

Written by Simon Asika on

Joomla!1.6 中,元件render是在Dispatch時進行的。當 JApplication::dispatch() 被執行時,其中一行就會看見: 

$contents = JComponentHelper::renderComponent($component);
$document->setBuffer($contents, 'component');

呼叫元件helper在輸出緩衝之中渲染元件頁面的html,然後存在 $contents 中放進緩衝區,等待之後的全站 Render 過程再拿來用。

 


Joomla! 外掛開發教學 - Plugin tutorial & sketch files

Written by Simon Asika on

在 Joomla! 2.5 以後,開發 plugin 主要需要兩個檔案。一個是外掛主檔(php),另一個是安裝資訊檔(xml)。只要有這兩者即可成為一個可運作的外掛。其他語系檔或者附加檔案可在自行加上去。


Joomla 1.6 頁面讀取 API 載入順序

Written by Simon Asika on

這篇是為了研究 Joomla! 1.6 的整個頁面讀取過程做的筆記。

從 index.php 開始可以看見整個loading過程非常有結構的分成初期 載入 framework 與接下來的四個執行階段:

  1. Initialise
    初始化,載入整個 framework 並建立核心 Application 來進行接下來的流程。
  2. Route
    處理網址。取得接收到的參數或將SEF網址轉成參數,存入全域的 Request 資料中。方便之後任何應用程式提取。
  3. Dispatch
    分派該讀取的元件、模組等等,輸出至緩衝區。
  4. Render
    取得該頁面使用的模版與參數,將所有該輸出的html輸出完成,存入緩衝區中。

最後的 echo $app 就等於執行 $app->__toString() 這個php的魔術函式。並判斷是否要先 gzip 後再輸出。


Joomla! 1.6 開發者注意事項

Written by Simon Asika on

未完成文章,隨時補充 (最後更新 2011-03-19)

 

資料架構更動

  • 新增 ACL 表
  • 移除 jos_groups 表
  • 移除 jos_plugins 表,並整合進 jos_extensions
  • 新增套件更新用 update 表
    • jos_updates
    • jos_update_sites
    • jos_update_sites_extensions
    • jos_update_categories

 


Joomla! 線上 API 文件

Written by Simon Asika on


Control Tools

WS-logo