在page_header.lbi中調用SQL:
<?php
$sql = 'SELECT SUM(goods_number) AS number' .
' FROM ' . $GLOBALS['ecs']->table('cart') .
" WHERE session_id = '" . SESS_ID . "' AND rec_type = '" . CART_GENERAL_GOODS . "'";
$row = $GLOBALS['db']->GetRow($sql);
if ($row)
{
$number = intval($row['number']);
}
else
{
$number = 0;
}
echo $number;
?>
但這樣會有一個問題,因為不是AJAX調用的,所有在首頁會有緩存,也就是導致首頁購物車中顯示的購物數量不准確,所以在index.php中關閉緩存,設置$smarty->caching = false; 前期用戶量小,這種方法沒有多大的問題。
使用AJAX調用也許會 解決這個問題,但是需要用post的方式來提交異步請求,如果用get的話會泄露用戶的信息,導致安全問題,有待進一步開發。
失敗的嘗試:將page_header.lbi中的內容放到index.dwt中,然后設置一個可編輯區域,在后台模板調用中調用購物車信息,把includes/lib_insert.php中的 cart_info方法 改一下,返回$number,而不是格式化好的字符串,可是自定義的區域無法正常顯示,沒惹你的區域可以,不知道 為何,糾結,有待進一步考證。
緩存問題已解決,問題出在lib_insert里的函數,最后返回的是一個鏈接,導致了兩個<a>標簽的嵌套,所以出了問題。