ECSHOP後臺開發模塊步驟

一、建數據庫

二、添加到後臺導航欄並配置相關語言包

三、權限配置

四、添加增刪查改

五、增加其他功能(複製,搜索(暫時調不出來頁面),排序,轉移,AJAX)


ECSHOP後臺開發模塊步驟

以添加支付信息模塊爲例

第一步首先我們用phpmyadmin建一個支付表,表名:ecs_pay表字段:pay_id,pay_name,pay_info,pay_bank,pay_credit,pay_state第二步添加到後臺左側導航欄並配置權限和相關語言包

共修改四個文件inc_priv.php、 inc_menu.php 、priv_action.php、common.php

1.打開languages\zh_cn\admin\common.php

找到 添加

$_LANG['18_pay'] = '支付管理';

文件末尾添加

$_LANG['02_pay_list'] = '支付人信息';

$_LANG['03_pay_charge'] = '賬戶充值';

$_LANG['04_pay_record'] = '流水記賬';

配其他相關的語言包

$_LANG['pay_name'] = '支付人';

$_LANG['pay_info'] = '支付信息';

$_LANG['pay_bank'] = '開戶銀行';

$_LANG['pay_credit'] = '開戶帳號';

$_LANG['pay_state'] = '狀態';

2.打開admin\includes\inc_menu.php

末尾添加

$modules['18_pay']['02_pay_info'] = 'pay.php?act=list';

$modules['18_pay']['03_pay_charge'] = 'pay.php?act=charge';

$modules['18_pay']['04_pay_record'] = 'pay.php?act=record';

OK,菜單欄顯示

第三步

配置權限體系(priv_action.php ,inc_priv.php)

1.在表ecs_admin_action 裏面添加模塊字段pay 、pay_manage、 pay_drop

parent_id = 0的爲頂級欄目,其他子欄目的操作,都繼承了parent_id 和頂級欄目關聯起來.(注意action_id 和parent_id 的關係 )

添加一個頂級欄目 pay action_id爲136 parent_id 爲0;

其下子欄目 pay_manage parent_id 爲136;

pay_drop parent_id 爲136;

2.打開languages\zh_cn\admin\priv_action.php

下添加

$_LANG['pay'] = '支付管理';

末尾添加

//支付管理

$_LANG['pay_manage'] = '支付添加/編輯';

$_LANG['pay_drop'] = '支付刪除';

3.打開admin\includes\inc_priv.php

末尾添加

//支付管理

$purview['02_pay_info'] = array('pay_manage', 'pay_drop');

$purview['03_pay_charge'] = 'pay_manage';

$purview['04_pay_record'] = 'pay_manage';

第四步,添加基本的增刪改查功能

建四個文件 pay.php、pay_list、pay_info、pay_search

.添加“增加”功能

//-- 添加支付人信息

if ($_REQUEST['act'] == 'add')

{

// admin_priv('pay_manage');

$smarty->assign('ur_here', $_LANG['pay_name_add']);

//$smarty->assign('action_link', array('text' => $_LANG['pay_name_add'], 'href' => 'pay.php?act=list'));

$smarty->assign('form', 'insert');

assign_query_info();

$smarty->display('pay_info.htm');

}

//-- 添加支付人信息

if ($_REQUEST['act'] == 'insert')

{

//admin_priv('pay_manage');

$is_only = $exc->is_only('pay_id', $_POST['pay_id'],0, " pay_id ='$_POST[pay_id]'");

if (!$is_only)

{

sys_msg($_LANG['goods_exist'], 1);

}

if (empty($_POST['pay_id']))

{

$_POST['pay_id'] = 0;

}

$sql = "INSERT INTO ".$ecs->table('pay')."(pay_id, pay_name,pay_info, pay_bank, pay_credit) ".

"VALUES ('$_POST[pay_id]','$_POST[pay_name]', '$_POST[pay_info]', '$_POST[pay_bank]', '$_POST[pay_credit]')";

$db->query($sql);

$link[0]['text'] = $_LANG['back_list'];

$link[0]['href'] = 'pay.php?act=list';

$link[1]['text'] = $_LANG['pay_continue_add'];

$link[1]['href'] = 'pay.php?act=add';

admin_log($_POST['pay_id'],'add','exchange_goods');

clear_cache_files(); // 清除相關的緩存文件

sys_msg($_LANG['articleadd_succeed'],0, $link);

}

(首先是根據act傳來的參數add,把參數insert賦值到smarty模板,放在在添加頁面隱藏域中,更新也是如此)

1.根據傳遞過來的act的參數insert邏輯添加處理,(參數insert在添加頁面的)

2.admin_priv函數判斷是否具有權限,

3.$exc->is_only()判斷自增號是否唯一(可去掉)

4.$db->query($sql)對數據庫進行操作,

5.admin_log()函數記錄操作信息

6.clear_cache_files();清除緩存

7.sys_msg()函數提示操作信息

2..添加“修改功能”

//-- 編輯

if ($_REQUEST['act'] == 'edit')

{

// admin_priv('exchange_goods');

$sql = "SELECT * FROM " . $ecs->table('pay') ." WHERE pay_id='$_REQUEST[id]'";

$pay = $db->GetRow($sql);

$smarty->assign('pay', $pay);

$smarty->assign('ur_here', $_LANG['pay_name_add']);

$smarty->assign('action_link', array('text' => $_LANG['pay_list'], 'href' => 'pay.php?act=list'));

$smarty->assign('form', 'update');

assign_query_info();

$smarty->display('pay_info.htm');

}

//-- 編輯

if ($_REQUEST['act'] =='update')

{

// admin_priv('pay_manage');

if (empty($_POST['pay_id']))

{

$_POST['pay_id'] = 0;

}

if ($exc->edit("pay_name='$_POST[pay_name]', pay_info='$_POST[pay_info]', pay_bank='$_POST[pay_bank]', pay_credit='$_POST[pay_credit]'", $_POST['pay_id']))

{

$link[0]['text'] = $_LANG['back_list'];

$link[0]['href'] = 'pay.php?act=list&' ;

admin_log($_POST['pay_id'], 'edit', 'pay');

clear_cache_files();

sys_msg($_LANG['pay_update_success'], 0, $link);

}

else

{

die($db->error());

}

}

(首先是根據act傳來的參數edit把參數update賦值到smarty模板,放在在添加頁面隱藏域中)

1.根據傳遞過來的act的參數update邏輯添加處理,(參數update在添加頁面的)

2.admin_priv函數判斷是否具有權限,

3.判斷是否提交id值(爲空則賦值爲0)

4.$$exc->edit()對數據庫進行更新操作

5.admin_log()函數記錄操作信息

6.clear_cache_files();清除緩存

7.sys_msg()函數提示操作信息

3.添加“刪除功能”

//-- 刪除信息

elseif ($_REQUEST['act'] == 'remove')

{

//check_authz_json('pay_drop');

$id = intval($_GET['id']);

if ($exc->drop($id))

{

admin_log($id,'remove','article');

clear_cache_files();

}

$url = 'pay.php';

ecs_header("Location: $url\n");

exit;

}

act的參數爲remove

check_authz_json()函數檢查

$exc->drop($id)數據庫進行刪除操作

記錄操作記錄

清除緩存文件

ecs_header()跳轉

4..添加“批量刪除”

//-- 批量刪除

elseif ($_REQUEST['act'] == 'batch_remove')

{

admin_priv('pay');

if (!isset($_POST['checkboxes']) || !is_array($_POST['checkboxes']))

{

sys_msg($_LANG['no_select_goods'], 1);

}

$count = 0;

foreach ($_POST['checkboxes'] AS $key => $id)

{

if ($exc->drop($id))

{

admin_log($id,'remove','exchange_goods');

$count++;

}

}

$lnk[] = array('text' => $_LANG['back_list'], 'href' => 'pay.php?act=list');

sys_msg(sprintf($_LANG['batch_remove_succeed'], $count), 0, $lnk);

}

5.添加“搜索”(暫時調不出頁面)

6.添加"AJAX"功能

兩種情況(一種點擊修改狀態,一種是點擊修改文本框)

//-- 修改上架狀態(對錯狀態)

elseif ($_REQUEST['act'] == 'pay_state')

{

//check_authz_json('goods_manage');

$pay_id = intval($_POST['id']);

$pay_state = intval($_POST['val']);

if ($exc->edit("pay_state = '$pay_state'", $pay_id))

{

clear_cache_files();

make_json_result($pay_state);

}

}

Html頁面:

//-- 修改支付人姓名信息(點擊修改文本框)

elseif ($_REQUEST['act'] == 'edit_pay_name')

{

//check_authz_json('goods_manage');

$pay_id = intval($_POST['id']);

$pay_name = json_str_iconv(trim($_POST['val']));

if ($exc->edit("pay_name = '$pay_name'", $pay_id))

{

clear_cache_files();

make_json_result($pay_name);

}

}

Html 頁面

{$pay.pay_info}

7.排序問題

Php:

//-- 翻頁,排序

elseif ($_REQUEST['act'] == 'query')

{

// check_authz_json('exchange_goods');

$pay_list = get_exchange_goodslist();

$smarty->assign('pay', $pay_list['arr']);

$smarty->assign('filter', $pay_list['filter']);

$smarty->assign('record_count', $pay_list['record_count']);

$smarty->assign('page_count', $pay_list['page_count']);

$sort_flag = sort_flag($pay_list['filter']);

$smarty->assign($sort_flag['tag'], $sort_flag['img']);

make_json_result($smarty->fetch('pay_list.htm'), '',

array('filter' => $pay_list['filter'], 'page_count' => $pay_list['page_count']));

}

function get_exchange_goodslist()

{

$result = get_filter();

if ($result === false)

{

$filter = array();

$filter['sort_by'] = empty($_REQUEST['sort_by']) ? 'eg.pay_id' : trim($_REQUEST['sort_by']);

$filter['sort_order'] = empty($_REQUEST['sort_order']) ? 'asc' : trim($_REQUEST['sort_order']);

if (isset($_POST['brand_name']))

{

$sql = "SELECT COUNT(*) FROM ".$GLOBALS['ecs']->table('pay') .' WHERE pay_name = \''.$_POST['brand_name'].'\'';

}

else

{

$sql = "SELECT COUNT(*) FROM ".$GLOBALS['ecs']->table('pay');

}

$filter['record_count'] = $GLOBALS['db']->getOne($sql);

if (isset($_POST['brand_name']))

{

if(strtoupper(EC_CHARSET) == 'GBK')

{

$keyword = iconv("UTF-8", "gb2312", $_POST['brand_name']);

}

else

{

$keyword = $_POST['brand_name'];

}

$sql = "SELECT * FROM ".$GLOBALS['ecs']->table('pay')." WHERE pay_name like '%{$keyword}%' ORDER BY sort_order ASC";

}

else

{

$sql = 'SELECT eg.* '.

'FROM ' .$GLOBALS['ecs']->table('pay'). ' AS eg '.

'WHERE 1 ' .$where. ' ORDER by '.$filter['sort_by'].' '.$filter['sort_order'];

}

$filter = page_and_size($filter);

set_filter($filter, $sql);

}

else

{

$sql = $result['sql'];

$filter = $result['filter'];

}

$arr = array();

$res = $GLOBALS['db']->selectLimit($sql, $filter['page_size'], $filter['start']);

while ($rows = $GLOBALS['db']->fetchRow($res))

{

$arr[] = $rows;

}

return array('arr' => $arr, 'filter' => $filter, 'page_count' => $filter['page_count'], 'record_count' => $filter['record_count']);

}

Html:

{$lang.pay_name}{$sort_pay_name}

8.複製功能

Php:

//-- 複製

if ($_REQUEST['act'] == 'copy')

{

// 商品信息

$goods['pay_id'] = 0;

$sql = "SELECT '0' AS pay_id,pay_name,pay_credit,pay_info,pay_bank" .

" FROM " . $ecs->table('pay') .

" WHERE pay_id = '$_REQUEST[pay_id]' ";

$res = $db->query($sql);

while ($row = $db->fetchRow($res))

{

$db->autoExecute($ecs->table('pay'), $row, 'INSERT');

}

}

Html頁面:

因爲自己研究得不是很透徹,肯定還有很多有待改善的地方,但是基本開發思路已經出來了,大家可以按照步驟一步一步研究

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章