真開心!最近看完Working with database這一章,覺得好棒!
可能對大家來說都很簡單,可是我還是覺得我突破了,因為我會db_query了!
以下分享Privagemsg這個模組,如何在block裡面顯示"我的收件夾 (2)",
也就是抓出這個使用者收到幾封新信。
以下是我弄的登入後使用者的個人區塊。
<?php
global $user;
$count = db_result(db_query('SELECT COUNT(newmsg) FROM {privatemsg} p WHERE p.newmsg = 1 AND p.recipient = %d', $user->uid));
echo 'Hi!' . $user->name . '
歡迎登入捉迷藏,你今天想做什麼?
';
?>
會長類似這樣:
Re: 顯示Privatemsg收到幾封信
這好用 :)
Re: 顯示Privatemsg收到幾封信
ul 的部分也有現成的 theme 可以用 => theme_item_link
然後 'SELECT COUNT(newmsg) FROM {privatemsg} p WHERE p.newmsg = 1 AND p.recipient = %d'
通常有設了別名 那應該要統一使用
COUNT(newmsg) 的部分就沒加到別名
不然就是只 select 一個 table 的時候 其實不需要取別名
Re: 顯示Privatemsg收到幾封信
嗯!對噢!其實不需要把privatemsg取叫p,以點多此一舉。
不過theme_item_link要怎麼實現呢?感覺一次用了好多function和變數,
好亂哦!
Re:
最簡單的用法
<?php
GLOBAL $user;
$title = 'Hi!' . $user->name . '歡迎登入捉迷藏,你今天想做什麼?';
$items[] = l('我的收件夾 (' . $count . ')', "privatemsg/inbox", array('title' => '站內信的收信夾'));
$items[] = l('我的個人頁面', "user/$user->uid", array('title' => '看我的個人資料、訂單資料及在這個網站上發表過的內容'));
$items[] = l('編輯個人設定', "user/$user->uid/edit", array('title' => '編輯帳號資料及寵物資料'));
$items[] = l('登出', "logout", array('title' => '登出去'));
$output = theme('item_list', $items, $title);
print $output;
?>
在
內加屬性 ( class="menu" )
<?php
//前略
$output = theme('item_list', $items, $title, 'ul', array('class' => 'menu'));
?>
在每個
內加屬性 ( class="leaf" )
<?php
//前略
$items[] = array(
'class' => 'leaf',
'data' => l('我的收件夾 (' . $count . ')', "privatemsg/inbox", array('title' => '站內信的收信夾'))
);
$items[] = array(
'class' => 'leaf',
'data' => l('我的個人頁面', "user/$user->uid", array('title' => '看我的個人資料、訂單資料及在這個網站上發表過的內容'))
);
$items[] = array(
'class' => 'leaf',
'data' => l('編輯個人設定', "user/$user->uid/edit", array('title' => '編輯帳號資料及寵物資料'))
);
$items[] = array(
'class' => 'leaf',
'data' => l('登出', "logout", array('title' => '登出去'))
);
//後略
?>
Re: 顯示Privatemsg收到幾封信
雖然到最後因為要加一些屬性
結果陣列變的更大
比原本的寫法行數還要多
不過可以
依照 Drupal 格式統一輸出
減少程式內的 html 標籤
覆寫 theme_item_list 的時候將會套用修改
方便後續增加連結項目
傳入的 items 內的項目中包含 'children' => array([子選單的項目]) 的會輸出下一層的選單
Re: 顯示Privatemsg收到幾封信
感謝!書上都沒有教這些呢!
的確用Drupal的格式會比較好,又學到了。真開心!