ECSHOP後臺開發模塊步驟

1、建數據庫
2、添加到後臺導航欄並配置相關語言包
3、權限配置
4、添加增刪查改
5、增長其餘功能(複製,搜索(暫時調不出來頁面),排序,轉移,AJAX)


以添加支付信息模塊爲例

第一步首先咱們用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頁面:
<td align="center"><img src="images/{if $pay.pay_state eq 1}yes{else}no{/if}.gif" onclick="listTable.toggle(this, 'pay_state', {$pay.pay_id})" /></td>




/*------------------------------------------------------ */
//-- 修改支付人姓名信息(點擊修改文本框)
/*------------------------------------------------------ */
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 頁面
<td align="center"><span onclick="listTable.edit(this, 'edit_pay_info', {$pay.pay_id})">{$pay.pay_info}</span></td>

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:
   <th><a href="javascript:listTable.sort('pay_name'); ">{$lang.pay_name}</a>{$sort_pay_name}</th>

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頁面:

<a href="pay.php?act=copy&pay_id={$pay.pay_id}" title="{$lang.copy}"><img src="images/icon_copy.gif" width="16" height="16" border="0" /></a>

由於本身研究得不是很透徹,確定還有不少有待改善的地方,可是基本開發思路已經出來了,你們能夠按照步驟一步一步研究 javascript

相關文章
相關標籤/搜索