作者:Min2502857657_377 | 来源:互联网 | 2023-09-17 04:36
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就是语言包了,这里就是本地化的所有菜单项,添加一个呗,
刷新,哦也
添加一个菜单项就做好了,注意这个菜单的icon我是复制的好友菜单的。可是里面还是啥功能都没有,下回再叙吧