我是Drupal的新手,並且已經理解如何讓我的基本塊和菜單變得非常流暢。另外我學習了一些jQuery(它很棒)。對於Drupal 7使用jQuery Datatables模塊
我想用戶的分頁列表,它只是a separate PHP script此刻融入my new Drupal 7 site:
我想實現它作爲一個Drupal的菜單,讓我可以這樣稱呼它http://preferans.de/top和http://preferans.de/top/100(已分頁的偏移量爲0)(顯示的用戶開始與100用戶列表):
function pref_menu() {
$items['top'] = array(
'title' => 'Weekly player rating',
'description' => 'Weekly player rating',
'page callback' => 'pref_top_callback',
'access callback' => TRUE,
'file' => 'pref.top.inc',
'file path' => drupal_get_path('module', 'pref'),
'type' => MENU_CALLBACK,
);
return $items;
}
而且我非常SIMPL Ëpref.top.inc文件是:
function pref_top_callback($offset = 0) {
return array(
'pref_players_table' => array(
'#type' => 'markup',
'#markup' => pref_players_table($offset),
),
);
}
function pref_fetch_players($offset) {
/* FETCH MAX 20 RECORDS INTO AN ARRAY */
$players = array();
$result = db_query("
select u.id,
u.first_name,
row_number() OVER (order by m.money desc) as pos,
u.female,
u.city,
u.avatar,
m.money,
u.login > u.logout as online
from pref_users u, pref_money m where
m.yw=to_char(current_timestamp, 'IYYY-IW') and
u.id=m.id
order by m.money desc
limit 20 offset :offset
", array(':offset' => array($offset)),
array('fetch' => PDO::FETCH_ASSOC)
);
$players = $result->fetchAll();
/* PRINT THE ARRAY AS AN HMTL-TABLE */
$table = '<table>';
foreach ($players as $user) {
$table .= '<tr>';
$table .= sprintf('<td>%u</td>
<td><a href="/user.php?id=%s">%s</a></td>
<td>%s</td><td>%d $</td>',
$user['pos'],
$user['id'],
$user['first_name'],
$user['city'],
$user['money']);
$table .= '</tr>';
}
$table .= '</table>';
return $table;
}
這並不工作,我得到一個Drupal頁面含有多達20行的HTML表:
但我不知道怎麼樣使用the Datatables Drupal module。我已經成功下載並安裝了它,並正在查看它的源代碼,但不知道從哪裏開始。
請幫助我,我怎麼能從我的菜單功能調用它?
謝謝! Alex
對不起,但我不明白你的代碼:你填充$ rows數組,但你通過/返回它? $ header是什麼,可以設置爲$ header = array('pos','id','first_name','city','money'); ? – 2011-03-23 14:04:16
我也試過:$ header = array('pos','id','first_name','city','money'); $ rows = array(); foreach($ player爲$ player){ $ rows [] = array($ player ['pos'],$ player ['id'],$ player ['first_name'],$ player ['city'], $播放器[ '錢']); } return theme('table',$ header,$ rows); 但得到一個沒有桌子的白色屏幕 – 2011-03-23 14:09:16
對不起,我有一個錯字。顯然,你需要將$行傳遞給'行'。我修正了它,併爲$ header添加了一個示例。請注意,當您要使用TableSort時,您需要擴展$ header,請參閱http://api.drupal.org/api/drupal/modules--dblog--dblog.admin。inc/function/dblog_overview/7爲例。 – Berdir 2011-03-23 17:08:55