您在這裡

Ubercart 的商品頁面能否顯示購買者?

saa's 的頭像
saa 在 2010-05-13 (四) 19:39 發表

大家好!

在下安裝Ubercart 模組後,能夠順利建立商品頁面,內容包含商品描述、價格、我要購買等等...。

但是除了展示商品之外,還希望可以在商品的頁面顯示哪些人買過這個商品、以及商品剩下多少存貨。

本來打算用Content Templates抓取資料,可是發現沒有這兩項的變數可以顯示,不知道還有甚麼方法可以達到目的,請各位指教,感激不盡!

                                          saa

嘗試使用uc_who_bought_what 這個模組,可以讓賣家看到哪些人購買這份商品。

問題是它的設定只能顯示申請者下訂後的相關資料,如「E-mail」、「HowPay(付款方式)」、「申請日期」等等...,無法顯示我要的「使用者帳號」,只好直接跑去改模組...

首先進入 uc_who_bought_what 資料夾中的 uc_who_bought_what.module 檔案,已知我想要的「使用者帳號」位於users資料表中,因此找到

$sql = "SELECT $sqsel FROM $uc_orders JOIN $uc_order_products" .
" ON $uc_order_products.order_id = $uc_orders.order_id " .
" AND $uc_order_products.nid = $product_id";

將users資料表給JOIN進去,並根據uid(使用者編號)來抓取資料,修改後如下:

$sql = "SELECT $sqsel FROM ($uc_orders JOIN $uc_order_products" .
" ON $uc_order_products.order_id = $uc_orders.order_id " .
" AND $uc_order_products.nid = $product_id ) JOIN users ON $uc_orders.uid = users.uid";

搜尋找到下面這段,第三段「array('data' => t('Name'), 'field' => 'Name', 'sql_field' => "users.name")」是修改後的部分:

$header = array( //thanks to blackice78 for this code fix
array('data' => t('Qty'), 'field' => 'Qty', 'sql_field' => "$uc_order_products.qty"),
array('data' => t('Name'), 'field' => 'Name', 'sql_field' => "users.name"),
array('data' => t('Email'), 'field' => 'Email', 'sql_field' => "$uc_orders.primary_email"),
array('data' => t('Phone'), 'field' => 'Phone', 'sql_field' => "$uc_orders.billing_phone"),
array('data' => t('Price'), 'field' => 'Price', 'sql_field' => "$uc_order_products.price"),
array('data' => t('Total'), 'field' => 'Total', 'sql_field' => "($uc_order_products.price * $uc_order_products.qty)"),
array('data' => t('Date'), 'field' => 'Date', 'sql_field' => "FROM_UNIXTIME($uc_orders.created, '%Y.%m.%e')"),
array('data' => t('HowPay'),'field' => 'HowPay','sql_field' => "$uc_orders.payment_method"),
array('data' => t('Status'),'field' => 'Status','sql_field' => "$uc_orders.order_status"),
array('data' => t('ID'), 'field' => 'ID', 'sql_field' => "$uc_orders.order_id"),
);

找到下面這段,增加「$temparray[]= l($customer['Name'], 'user/' . $customer['uid']);」,修改後如下:
$temparray[]= $customer['Qty'];
$temparray[]= l($customer['Name'], 'user/' . $customer['uid']);
$temparray[]= l($customer['Email'], 'mailto:' . $customer['Email']);
$temparray[]= $customer['Phone'];
$temparray[]= number_format($customer['Price'],2);
$temparray[]= number_format($customer['Total'],2);
$temparray[]= $customer['Date'];
$temparray[]= $customer['HowPay'];
$temparray[]= l($customer['Status'],'admin/store/orders/' . $customer['ID']);

說明:根據購買者的uid去抓取users資料表中的name欄位,並顯示之。
 
 
 

完成後終於可以看到使用者帳號(即"名稱")了!

可是這個其實不是我要的...至今還是找不到直接將申請者名單條列在分享頁面上的方法...