橫向發展的Open Source學習路徑

O.S. CMS

話說回來,我到底是在忙什麼?又是被什麼打斷呢?看了一堆簡體中文,感覺頭腦都頓頓的(無不敬之意)。還是來回想一下吧!

開頭是javascript

一開始我是在我的RSS閱讀器看到javascript的效果介紹文章,然後我就連到他的網站,翻看javascript相關文章。因為除了php的Open Source CMS之外,javascript framework似乎也正進行著一疊疊的亂戰呢!

而且,我最喜歡的「核心+外掛」這模式看起來也在javascript framework的世界上演,所以我一直很想努力鑽研這部分。所以就先去翻文章了。

註:核心+外掛的例子:Firefox、Wordpress、Nuendo、Drupal、Joomla都是這樣獲取我芳心,甚至Photoshop的Blush也是

所以開頭是javascript。

JQuery

然後我發現framework裡面,好像JQuery很有名,但是Joomla是用一個叫做mootools的,而Joomla又有許多漂亮效果,所以我就一直找呀找,發現JQuery的外掛不能用在mootools底下(廢話),才發現這兩個東西原來不能並存!真有趣(哪裡有趣)!

所以目前我的看法是mootools的漸變動態效果比較漂亮,JQuery可能比較輕量吧!總之JQuery應該是比較有名。

然後Joomla內建的是mootools,Drupal內建的是JQuery,真的各有各的風格。

NiceJForms

然後我發現一個需要JQuery的表單美化工具,我對JQuery還非常不懂,所以不知這算不算是JQuery的外掛。總之,這個表單美化工具叫做NiceJForms,他的效果可以到達這樣的地步。

會不會太美了一點。(會有這種讚嘆,還真宅!)

所以從javascript的探索,我找到了NiceJForms。

Drupal Form API

然後我想起來前兩個星期開始學Drupal的Form API,我怎麼用CSS美化,表單都還是普普通通。雖然簡單方便就好,但我突然一股腦很想把javascript應用的技能學起來,所以不管目前Drupal的白老鼠網站的bug多到爆炸,我還是逕自測試起NiceJForm套到Drupal表單的方式。

所以從NiceJForms,我又跑到了Drupal Form API身上。

應該很簡單,按表操課就對了,NiceJForms的說明很簡單易懂,只要插入這些那些這些就好。所以,我打開特別用Drupal為某表單定製的template之後,打入

drupal_add_js(path_to_subtheme() .'/libraries/nicejforms/js/nicejforms.js');
drupal_add_css(path_to_subtheme() .'/libraries/nicejforms/css/niceforms-green.css');

這是Drupal內建的API,非常非常方便好用。想在這邊插入css,想在那邊插入javascript,都只需要一行字。

不過接下來,第三步驟是要在Form標籤加上class。聽起來很簡單,但是,Drupal的模板可怕的就是都要用Drupal的寫法,不用他的寫法,就等著死吧!所以直接硬是加個form標籤再加上class,是下下之策,既然都到別人家了,就乖乖用他的方法吧!

然後我寫了這兩種方式

$form['#attributes']['class'] = 'niceform';
$form['#attributes'] = array('class' => 'niceform');

都完全沒屁用,連print_r輸出的內容,都看不到#attributes有多個class,然後我憤怒之下,跑到template.php,找到定義這個表單模板的function

<?php
function phptemplate_buytogether_node_form($form) {
  global $user;
  $vars = array('user' => $user, 'form' => $form);  
  return _phptemplate_callback('buytogether_form', $vars);
}
?>

我先試著在return前面加上$form['#attributes']['class'] = 'niceform';,結果行不通,然後我又試著在$vars前面加看看,結果,print_r的#attributes就出現class這個東西了。

問題是,render之後的form仍舊沒有class,這到底是怎麼回事?

所以我就跑來部落格呼喊了。最後我鑽牛角尖的地方變成是Drupal的form到底怎麼插入class,回想到我的初衷,只不過是想用用看NiceJForms嘛!

然後有個心得,就是本文標題,我發現我的學習路徑,都是橫向的,我沒辦法畫出來,但我真的覺得我像毛毛蟲一樣,沒有先把一樣東西學會,就跑去學下一樣東西,一開始我都覺得這樣不太好,但我後來想想,既然只有這種方式能夠讓我有一頭熱的熱情繼續鑽研下去,那就這樣吧!

最後,我想問的是,Open Source為何大家都簡稱OSS?為何有兩個S呢?

回應

一般稱開放原始碼指的大多是軟體,所以OSS其實是指Open Source Software

至於為什麼簡稱Open Source為OSS,其一應該是上述的原因;另一則是簡稱OS的話,大概會跟另一個OS(Operation System)弄混吧

是啊!真過份。如果Open Source CMS簡稱OSC,那又會變成某購物車系統了!

那小妹你最后找到解决办法吗?

我從一開始就放棄程式,看著 Programmer 陷在電腦面前,那個樣子就讓我不敢恭維了。

加油!

發表新回應

這個欄位的內容會保密,不會公開顯示。 If you have a Gravatar account, used to display your avatar.
  • 自動將網址與電子郵件位址轉變為連結。
  • 可使用的 HTML 標籤:<a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • 自動斷行和分段。

更多關於格式選項的資訊