热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ecmall开发记录(二)

ecmall基本的功能还算不错,拿过来就能用,但是老板想要加一个余额支付的功能,就是用户先把钱存到账户里,购买商品时直接用余额支付,这样可以更快回收资金。于是这个艰巨的任务就是我来做啦。先

  ecmall基本的功能还算不错,拿过来就能用,但是老板想要加一个余额支付的功能,就是用户先把钱存到账户里,购买商品时直接用余额支付,这样可以更快回收资金。于是这个艰巨的任务就是我来做啦。

  先注册一个用户登陆进去看看,用户中心的默认app就是member.app

 

  那就去member.app.php里看看,打开一看,又是一大堆shit。

  我就想先知道左边的菜单栏是如何做出来的,如图

  找啊找,找模板,在themes\mall\default文件夹中找到member.index.html,打开一看,里面又引用了member.header.html和member.menu.html。打开member.menu.html,看到了这么一段

  感觉比较像,因为用firebug看到菜单栏的源码就是如此这般

  foreach from是ecmall模板里的语法,就和foreach as 差不多,但是$_member_menu是从哪里来的呢?再去源码里找!直接在member.app.php中ctrl+F,没找到?额,不要逼我用大招,使用zend里面的search也就是ctrl+H键,在整个工作区里找这个变量,终于被我找到了两行。

  

  frontend.base.php?好像是个基类。爱啥啥,直接来到第541行,看到是把_get_member_menu()方法分配给了$_member_menu,so,再来到第579行,

  

 function _get_member_menu()
    {
        $menu = array();

        /* 我的ECMall */
        $menu['my_ecmall'] = array(
            'name'  => 'my_ecmall',
            'text'  => Lang::get('my_ecmall'),
            'submenu'   => array(
                'overview'  => array(
                    'text'  => Lang::get('overview'),
                    'url'   => 'index.php?app=member',
                    'name'  => 'overview',
                    'icon'  => 'ico1',
                ),
                'my_profile'  => array(
                    'text'  => Lang::get('my_profile'),
                    'url'   => 'index.php?app=member&act=profile',
                    'name'  => 'my_profile',
                    'icon'  => 'ico2',
                ),
                'message'  => array(
                    'text'  => Lang::get('message'),
                    'url'   => 'index.php?app=message&act=newpm',
                    'name'  => 'message',
                    'icon'  => 'ico3',
                ),
                'friend'  => array(
                    'text'  => Lang::get('friend'),
                    'url'   => 'index.php?app=friend',
                    'name'  => 'friend',
                    'icon'  => 'ico4',
                ),
                /*
                'my_credit'  => array(
                    'text'  => Lang::get('my_credit'),
                    'url'   => 'index.php?app=member&act=credit',
                    'name'  => 'my_credit',
                ),*/
            ),
        );
...

  是的吗是的吗?好激动耶,四个数组正好对应着账户概览,个人资料,短消息和好友。所以我也来一首,随便复制一个array改成这样

  

'account'  => array(
                    'text'  => Lang::get('account'),
                    'url'   => 'index.php?app=account',
                    'name'  => 'account',
                    'icon'  => 'ico4',
                ),

  新菜单项出现了!

  

  但是只是英文的,而且点进去出现了这个

  

  这是没有account.app.php,这个可以理解。那么怎么把英文菜单显示成中文呢?text选项是以 Lang::get()方法取得的,在zend里转到定义,在/eccore文件夹里的ecmall.php文件找到了这个方法

  

class Lang
{
    /**
     *    获取指定键的语言项
     *
     *    @author    Garbin
     *    @param     none
     *    @return    mixed
     */
    function &get($key = '')
    {
        if (Lang::_valid_key($key) == false)
        {
            return $key;
        }
        $vkey = $key ? strtokey("{$key}", '$GLOBALS[\'__ECLANG__\']') : '$GLOBALS[\'__ECLANG__\']';
        $tmp = eval('if(isset(' . $vkey . '))return ' . $vkey . ';else{ return $key; }');

        return $tmp;
    }
...

  再往下也看不懂了,直接度娘

  原来已经有人写好了,呜呜

  

  common.lang.php就是语言包了,这里就是本地化的所有菜单项,添加一个呗,

  

'account'=>'用户账户',

  刷新,哦也

  

  添加一个菜单项就做好了,注意这个菜单的icon我是复制的好友菜单的。可是里面还是啥功能都没有,下回再叙吧

  


推荐阅读
  • 本文将从基础概念入手,详细探讨SpringMVC框架中DispatcherServlet如何通过HandlerMapping进行请求分发,以及其背后的源码实现细节。 ... [详细]
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
  • HTML:  将文件拖拽到此区域 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • CSS Border 属性:solid 边框的使用详解
    本文详细介绍了如何在CSS中使用solid边框属性,包括其基本语法、应用场景及高级技巧,适合初学者和进阶用户参考。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 本文详细介绍了在 CentOS 系统中如何创建和管理 SWAP 分区,包括临时创建交换文件、永久性增加交换空间的方法,以及如何手动释放内存缓存。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ... [详细]
  • Requests库的基本使用方法
    本文介绍了Python中Requests库的基础用法,包括如何安装、GET和POST请求的实现、如何处理Cookies和Headers,以及如何解析JSON响应。相比urllib库,Requests库提供了更为简洁高效的接口来处理HTTP请求。 ... [详细]
  • 深入探讨前端代码优化策略
    本文深入讨论了前端开发中代码优化的关键技术,包括JavaScript、HTML和CSS的优化方法,旨在提升网页加载速度和用户体验。 ... [详细]
  • spring boot使用jetty无法启动 ... [详细]
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • 深入理解Java SE 8新特性:Lambda表达式与函数式编程
    本文作为‘Java SE 8新特性概览’系列的一部分,将详细探讨Lambda表达式。通过多种示例,我们将展示Lambda表达式的不同应用场景,并解释编译器如何处理这些表达式。 ... [详细]
author-avatar
Min2502857657_377
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有