给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中就可以去获取相应的内容。
<tr>
<th>{$lang.goods_name}</th>
<th>{$lang.order_sn}</th>
<th>{$lang.logistics_name}</th>
<th>{$lang.amount}</th>
<th>{$lang.logistics_cost}</th>
<th>{$lang.sell_date}</th>
</tr>
{foreach from=$goods_sales_list item=list}
<tr align="center">
<td align="left"><a href="../goods.php?id={$list.goods_id}" target="_blank">{$list.goods_name}</a></td>
<td><a href="order.php?act=info&order_id={$list.order_id}">{$list.order_sn}</a></td>
<td align="right">{$list.shipping_name}</td>
<td align="right">{$list.goods_num}</td>
<td align="right">{$list.logistics_price}</td>
<td>{$list.sales_time}</td>
</tr>
注:这里 {$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') 一节里面
大致内容是这样的。
呵呵。呵呵。
- ecshop后台增加|添加商店设置选项和使用方法详解
有时候我们想在Ecshop后台做个设置.radio.checkbox 等等来控制页面的显示,看看Ecshop的设计,用到了shop_config这个商店设置功能 Ecshop后台增加|添加商店设置选项 ...
- 我的第一个python web开发框架(36)——后台菜单管理功能
对于后台管理系统来说,要做好权限管理离不开菜单项和页面按钮控件功能的管理.由于程序没法智能的知道有什么菜单和控件,哪些人拥有哪些操作权限,所以首先要做的是菜单管理功能,将需要管理的菜单项和各个功能项添 ...
- Ecshop 后台增加一个左侧列表菜单menu菜单的方法
Ecshop 后台增加一个左侧列表菜单menu菜单需要修改三个文件:/admin/includes/inc_menu.php/admin/includes/inc_priv.php/languages ...
- ecshop后台增加模块菜单详细教程(图)
我们有时候针对ecshop如此开发,想在后台加一些菜单,最模板以前提供过教程,但是并非很系统,今天最模板抛砖引玉图文教程告诉大家:如何在ecshop后台增加模块菜单! 首先需要修改四个文件:inc_p ...
- ecshop 后台增加栏目
① 后台左侧导航添加菜单 Ecshop后台增加一个左侧列表菜单需要修改三个文件/admin/includes/inc_menu.php /admin/includes/inc_priv.php /la ...
- ecshop后台增加模块菜单详细教程
我们有时候针对ecshop如此开发,想在后台加一些菜单,最模板以前提供过教程,但是并非很系统,今天最模板抛砖引玉图文教程告诉大家:如何在ecshop后台增加模块菜单! 首先需要修改四个文件:inc_p ...
- django项目后台权限管理功能。
对后台管理员进行分角色,分类别管理,每个管理员登录账号后只显示自己负责的权限范围. 创建后台管理数据库 models.py文件内 # 管理员表 class Superuser(models.Model ...
- ecshop后台增加模块菜单项详细教程(图文)
有的时候我们会在后台增加新的功能,菜单项是一个程序的入口,是必不可少的,如何在后台增加菜单项呢,大家可以参考下面的教程: 例如:想在后台左侧的菜单栏的"促销管理"下添加一个&q ...
- 为ecshop红包增加”转赠”功能
ecshop促销中使用红包激励用户购物,要想炒热活动,红包就需要有物以稀为贵的感觉.有人求有人送,这样红包之间的转赠有助于拉动第二梯队的顾客.但是如果已经把红包添加到自己的账户了怎么办?如果ecsho ...
随机推荐
- 前端-mate讲解
<meta> 元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词. <meta> 标签位于文档的头部,不包含任何内容. & ...
- Leetcode算法刷题:217和219题 Contains Duplicate
从题目名字就可以看出这两道题是相似的,219是217的加强版 217:Contains Duplicate 题目 给予一个数组,判断是否有重复的元素.如果有就返回True,没有就返回False.以下是 ...
- {A} + {B}(unique水)
{A} + {B} Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- Lwip lwip_recvfrom函数一个数据包不能分多次读取。
最近在写一个基于Lwip协议栈的网络程序,对于一包数据,想先获得包头信息,再根据包头信息读取后面的数据,但是调用recvfrom后,发现读取后面的数据读取不到,进一步查阅发现,原来对于UDP协议,一次 ...
- MYSQL 查看可用的字符集的 2 方法
方法 1. show character set; 方法 2. show collation;
- android TextView EditTextView一些技巧使用 (视图代码布局)
android TextView 是最常用的控件 可以用作普通的显示,还可以用作有显示文字的按钮,用作有显示图片的图文组合 1. 图文组合 xml 中: <TextView android:id ...
- PHP中的错误处理
程序只要在运行,就免不了会出现错误!或早或晚,只是时间问题罢了. 错误很常见,比如Notice,Warning等等.此时一般使用set_error_handler来处理: <?php set_e ...
- linux下设置ip地址 gw网关,dns的方法
本文介绍下,在linux中设置IP地址.网关.dns的方法,有需要的朋友作个参考吧. 设置linux网络的方法有两种:第一种:使用命令修改(直接即时生效) 复制代码代码示例: ip and net ...
- 利用COM组件IPicture读取jpg、gif、bmp图片文件数据和显示图片
1.读取图片数据 函数原型:bool LoadImage(const char *pName, unsigned char *pBitData); 函数功能,读取pName指向的图片文件的位图数据 b ...
- raft 一致性算法
介绍: 过去, Paxos一直是分布式协议的标准,但是Paxos难于理解,更难以实现,Google的分布式锁系统Chubby作为Paxos实现曾经遭遇到很多坑. 来自Stanford的新的分布式协议研 ...