最近在做一個 ubercart 的 customization
主要是管理頁面有新的選項和結賬的時候橧加一組必填資料
是 Drupal 6 的客製化,而在 Drupal 7 和 commerce 的出現之後
其實這些都不太重要了
但不記錄下來的話便會更加浪費
所以還是簡單的記錄一下
管理頁面新的選項
例如在 /admin/store/orders/1005243/edit 增加一組 form 元素
hook_order_pane 定義 pane
傳入 callback,最後當然是返回 form API 定義:
<?php
/**
* Implementation of hook_order_pane().
*/
function hook_order_pane() {
$panes[] = array(
'id' => 'example',
'callback' => 'example_pane',
'title' => t('Example'),
'desc' => t('Select'),
'class' => 'pos-left',
'weight' => -1,
'show' => array('view', 'edit'),
);
return $panes;
}
/**
* Handle delivery date and time on order pane
*/
function example_pane($op, $arg1) {
switch ($op) {
case 'view':
return 'Example';
case 'edit-form':
$form['driver']['driver_id'] = array(
'#type' => 'select',
'#title' => t('Select'),
'#default_value' => 0,
'#options' => $options,
);
return $form;
?>
以上代碼輸出一個新的 select 到修改 order 表單
但記錄到 database 的部份還需要以下代碼:
<?php
/**
* Implementation of hook_order().
*/
function hook_order($op, &$arg1, $arg2) {
switch ($op) {
case 'save':
db_query($sql);
break;
}
case 'load':
$result = db_query($sql);
if ($data = db_fetch_object($result)) {
$arg1->example['key'] = $data->example;
}
break;
}
?>
以上三個 hook 便可以簡單新增一個管理者專用的 dropdown
可以記錄例如送了貨沒有,簡單的客戶回應等等
下一篇續說明一下結賬時新增表單的 hooks
p.s. 話說真的應該花點時間將這個 blog upgrade 到 Drupal 7 了