給ecshop後臺增加管理功能頁面

給ecshop後臺增加管理功能頁面

比如我們增加一個統計報表叫做 物流費用統計報表

放在後臺“報表統計”欄目中

具體操作步驟:

第一步,我們要添加一個菜單到後臺,然後設置語言項,最後設置權限,這樣,後臺就有了一個可以點擊的鏈接,並且可以分配權限;
第二步,新增鏈接文件,包括模板文件和後臺操作文件,也需要新增語言項;
第三步,測試;


好,我們一步一步完成它。

我們先在後臺添加菜單。

打開language\zh_cn\admin\commn.php
例如新菜單要加在報表統計下,添加如下代碼:

$_LANG['report_profit'] = '利潤統計報表';

$_LANG['report_logistics'] = '物流費用統計報表';



然後打開admin\includes\modules\inc_menu.php

爲新菜單添加動作/鏈接

插入以下代碼:


$modules['06_stats']['report_profit']               = 'report_profit.php?act=list';
$modules['06_stats']['report_logistics']            = 'report_logistics.php?act=list';

到這步後,清空緩存,後臺左側菜單列表中,就已經有了剛剛添加的菜單,如果不需要權限分配到這裏就可以用了。

現在爲新添加的菜單加入權限控制的功能


打開language\zh_cn\admin\priv_action.php

找到訂單管理部分權限說明,在下面添加:

$_LANG['sale_order_report1'] = '查看利潤統計報表';

$_LANG['sale_order_report2'] = '查看物流費用統計報表';


然後打開admin\includes\inc_priv.php

添加:

    $purview['report_profit']           = 'sale_order_report1';

    $purview['report_logistics']           = 'sale_order_report2';


最後,在數據庫中添加權限記錄:

esc_admin_action表中插入新的一條記錄

如下圖這樣



插入的代碼參考:


INSERT INTO `ecshop`.`ecs_admin_action` (

`action_id` ,
`parent_id` ,
`action_code` ,
`relevance`
)
VALUES (
'136', '6', 'sale_order_report1', ''
);




parent_id就是所屬大菜單的ID,這裏以訂單管理舉例就寫6。action_id按照已有的id加一排下去。

到這裏所有的工作已經結束了,如果沒有生效的話可以再清理緩存刷新一下。

管理員權限設置中就增加了:





============================================


剛纔我們添加了兩個鏈接文件,如:
$modules['06_stats']['report_profit']               = 'report_profit.php?act=list';
$modules['06_stats']['report_logistics']            = 'report_logistics.php?act=list';

report_profit.php,還有report_logistics.php,分別對應

report_profit.php    -- 利潤統計報表
report_logistics.php    -- 物流費用統計報表

這兩個文件建議自己做,但是可以先參考系統現有的文件,如 sale_list.php

複製 sale_list.php 爲 report_profit.php

將 ECSHOP 銷售明細列表程序 修改爲 ECSHOP 利潤統計報表程序

找到 language\zh_cn\admin\statistic.php 打開,在最後添加:
$_LANG['order_id'] = '序列';
$_LANG['logistics_name'] = '物流名稱';
$_LANG['logistics_cost'] = '運費';
$_LANG['download_logistics'] = '下載運費明細報表';
$_LANG['all_logistics_cost'] = '總運費';
$_LANG['logistics_reingewinn'] = '物流利潤';


$_LANG['profit_name'] = '利潤';
$_LANG['suoshu_order_sn'] = '所屬訂單';
$_LANG['goods_kosten'] = '成本';
$_LANG['all_goods_kosten'] = '總成本';
$_LANG['all_goods_price'] = '總售價';
$_LANG['goods_reingewinn'] = '淨利潤';
$_LANG['download_profit'] = '下載利潤統計報表';


保存。


找到 $smarty->assign('ur_here',      $_LANG['sale_list']); 修改爲

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

是在report_profit.php中

另一個report_logistics.php則:

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

修改完之後,刷新並訪問,會發現:






右側頁面相關名稱被修改了。



權限方面的檢查:

在report_profit.php中

    check_authz_json('sale_order_report1');

在report_logistics.php中

    check_authz_json('sale_order_report2');

注意,有兩處,都要修改。


接下來,新增 repost_profit.htm 和 report_logistics.htm 兩個模板文件。

同樣,我們之前是複製 sale_list.php 文件,那麼,這裏也複製它的 sale_list.htm文件,在admin/templates 裏面。

這裏要根據你所需要的內容進行修改,如report_logistics是物流費用統計報表,
那麼,所需要的字段是序列、商品名稱、物流名稱、數量、運費、售出日期等,最後再來一個總運費

在report_logistics.php文件中,就必須從數據庫中獲取到相關數據。

修改sql:

    $sql = 'SELECT og.goods_id, og.goods_sn, og.goods_name, og.goods_number AS goods_num, oi.shipping_fee '.
           'AS logistics_price, oi.add_time AS sales_time, oi.order_id, oi.order_sn  , oi.shipping_name '.
           "FROM " . $GLOBALS['ecs']->table('order_goods')." AS og, ".$GLOBALS['ecs']->table('order_info')." AS oi ".
           $where. " ORDER BY sales_time DESC, goods_num DESC";

增加了oi.shipping_fee AS logistics_price 這個,還有 oi.shipping_name 
建議增加時查看數據庫表結構

然後,在report_logistics.htm中就可以去獲取相應的內容。

     
      
     
     
     
     
     
     
   
  {foreach from=$goods_sales_list item=list}
   
     
     
     
     
     
     
   



注:這裏 {$lang.goods_name} 是在 language\zh_cn\admin\statistic.php 文件中添加的內容

{$list.shipping_name} 這個就是sql裏面的字段名了

同時,還需要在report_logistics.php文件 裏面修改下載xls文件的內容,也類似:

        echo ecs_iconv(EC_CHARSET, 'GB2312', $_REQUEST['start_date']. $_LANG['to'] .$_REQUEST['end_date']. $_LANG['sales_list']) . "\t\n";

       
        echo ecs_iconv(EC_CHARSET, 'GB2312', $_LANG['order_id']) . "\t";
        echo ecs_iconv(EC_CHARSET, 'GB2312', $_LANG['order_sn']) . "\t";
        echo ecs_iconv(EC_CHARSET, 'GB2312', $_LANG['logistics_name']) . "\t";
        echo ecs_iconv(EC_CHARSET, 'GB2312', $_LANG['amount']) . "\t";
        echo ecs_iconv(EC_CHARSET, 'GB2312', $_LANG['logistics_cost']) . "\t";
        echo ecs_iconv(EC_CHARSET, 'GB2312', $_LANG['sell_date']) . "\t\n";

$i = 0;


        foreach ($goods_sales_list['sale_list_data'] AS $key => $value)
        {
$i++;
echo  $i . "\t";
            //echo ecs_iconv(EC_CHARSET, 'GB2312', $i . "\t";
            echo ecs_iconv(EC_CHARSET, 'GB2312', '[ ' . $value['order_sn'] . ' ]') . "\t";
            echo ecs_iconv(EC_CHARSET, 'GB2312', $value['shipping_name']) . "\t";
            echo ecs_iconv(EC_CHARSET, 'GB2312', $value['goods_num']) . "\t";
            echo ecs_iconv(EC_CHARSET, 'GB2312', $value['logistics_price']) . "\t";
            echo ecs_iconv(EC_CHARSET, 'GB2312', $value['sales_time']) . "\t";
            echo "\n";
        }


注:以上部分是在 if ($_REQUEST['act'] == 'download') 一節裏面


大致內容是這樣的。
{$list.sales_time}
{$list.logistics_price}
{$list.goods_num}
{$list.shipping_name}
{$list.order_sn}
{$list.goods_name}
{$lang.sell_date}
{$lang.logistics_cost}
{$lang.amount}
{$lang.logistics_name}
{$lang.order_sn}
{$lang.goods_name}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章