學東西,一般人都說要從基礎學起,可是我就是喜歡反過來,像倒吃甘蔗一樣,從我能接受的複雜東西玩起,再慢慢學回來。因為複雜的東西通常比較好玩,對我來說,學東西最快的方式,就是「讓我覺得好玩」。
反過來學習
所以,在我能夠接受Drupal的難懂和複雜之後,我就慢慢陷進去了,突破心牆,打開模組原始碼來研究已經是很普通的事情(對我這種不會寫程式的人來說,真的是跨出一大步啊!),然後也是後來才知道,這樣的程式寫作風格是類似JAVA,但我也不知道什麼是JAVA。
總之一切都是相反。
最基本的print_r()
但其實也是有壞處,那就是我最基本的東西很多都不懂。到最後,讓我驚奇連連的關鍵,居然會是最基本的東西。
那就是print_r()。
我在評估一個CMS好不好用的時候,都會很特別注意佈景、模版的彈性,因為能夠完全的客製化,才叫做好的系統嘛!而Drupal的Theming讓我滿痛苦的,原因上次已經抱怨過了(這邊),不過今天要說的是,print_r()以及db_fetch_object()真的很好用呢!
不論用什麼方式,只要把要的資料搞成一個物件,再用print_r()把這個物件印出來,像是這樣:
<?php
$type = 'blog';
$status = 1;
$sql = "SELECT * FROM {node} WHERE type = '%s' AND status = %d";
$result = db_query(db_rewrite_sql($sql), $type, $status);
while ($data = db_fetch_object($result)) {
$node = node_load($data->nid);
print_r($node);
?>
這樣會跑出像這樣的東西。
這方法是hom教我的,真的很感謝。有興趣可以再看看那篇討論:「theme()的問題」。這東西目前是救過我幾次,不過也有人質疑,所以不一定是最好的工具。
順帶一提,在前後加上pre會更好閱讀。像這樣:
<?php
print '
'. print_r($variable, TRUE) .'
';
?>
Re: print_r()真是好東西
我的作法是:
drupal_set_message('
');
Re: print_r()真是好東西
噢!這樣就會在message的位置出現對吧!
的確不錯!
Re: print_r()真是好東西
...標準的SEO寫法
Re: print_r()真是好東西
如果你有devel 模組,
kprint_r() 更好用!!
Joetsui's blog
Re: print_r()真是好東西
有 devel module的話
可以使用 dpm function, 效果和print_r 一樣、不過會把所有的資料output 在 drupal 訊息裡。
by the way, 樓上Joe的blog 很不錯:)
Best Regards, Jessie