稍晚再整理撰寫區塊的大綱。此篇先說明撰寫區塊的注意事項。
xoops的區塊(blocks)其實就是一個函數搭配一個樣版,函數把區塊的內容當成傳回值丟給smarty樣版去處理,之後就變成區塊。函數的作用就是把資料整理並組織好,通常是到資料庫裡去撈出適當的資料,然後將資料return出來,xoops就會把傳回值丟到事先設定好的樣版檔案(在xoops_version.php裡設定)去處理。
所以理論上你可以這麼做:用一個函數搭配不同樣版形成多個區塊;也可以多個函數搭配同一個樣版形成多個區塊。
用一個函數搭配多個樣版,重點在於函數要抓取的資料必須多樣性,而樣版所呈現的資料必須不一樣。
相反的,同多個函數搭配同一個樣版,這些函數處理的資料必須相近,通常差別在於篩選條件的不同,所以才能放到相同的樣版裡去。
不過,因為區塊還可以編輯區塊屬性,這些區塊屬性通常也可以看作是設定條件,或者是列出筆數…等等,所以函數及樣版的搭配還可以更多樣化,而且smarty樣版還可以做條件的判斷,所以區塊的作法也可以做得很複雜。
一般區塊的函數大概都是到資料庫抓資料,所以這時候只要使用$xoopsDB物件就很好用了。不過,如果區塊有用到該模組自己的變數,這時引用的方式就必須以絕對路徑來引入檔案,因為區塊的函數看起來像是被引入另一個檔案,所以若使用相對路徑來引入檔案將會失敗,而造成結果不如預期。
Hi there,
wp.chunhsin.idv.tw to GoogleReader!
Thanks
AlexAxe