ecmall基本的功能還算不錯,拿過來就能用,但是老闆想要加一個餘額支付的功能,就是用戶先把錢存到賬戶裏,購買商品時直接用餘額支付,這樣可以更快回收資金。於是這個艱鉅的任務就是我來做啦。
先註冊一個用戶登陸進去看看,用戶中心的默認app就是member.app
那就去member.app.php裏看看,打開一看,又是一大堆shit。
我就想先知道左邊的菜單欄是如何做出來的,如圖
找啊找,找模板,在themes\mall\default文件夾中找到member.index.html,打開一看,裏面又引用了member.header.html和member.menu.html。打開member.menu.html,看到了這麼一段
<!--{foreach from=$_member_menu item=item}--> <!--{if $item.submenu}--> <dl> <dt>{$item.text}</dt> <!--{foreach from=$item.submenu item=subitem k=k}--> <dd> <!--{if $subitem.name eq $_curitem}--> <a href="{$subitem.url}" class="active"><span class="{$subitem.icon}">{$subitem.text}</span></a> <!--{else}--> <a href="{$subitem.url}" class="normal"><span class="{$subitem.icon}">{$subitem.text}</span></a> <!--{/if}--> </dd> <!--{/foreach}--> </dl> <!--{/if}--> <!--{/foreach}-->
感覺比較像,因爲用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我是複製的好友菜單的。可是裏面還是啥功能都沒有,下回再敘吧