Ecmall用户中心分买家和卖家功能页面(类淘宝版本)的方法
  • 分类:经验分享
  • 发表:2013-12-02
  • 围观(9,082)
  • 评论(3)

默认情况下,Ecmall的用户中心只有一个主页面,买家功能和卖家功能是在一起的。这样管理起来不够方便和直观。所以增加这个功能,类似于淘宝用户中心的界面。不多说,这个功能别人卖的是800元,自己按这个教程修改可能不到一个小时,功能完善,界面美化完估计也是一晌时间的事。

界面的演示:

mjzx mjzxx具体的细节没有修改,具体详细修改一下,再增加一些样式就和淘宝的用户中心一样了,,大概是原来版本的吧。。

具体修改方法:

1、创建APP应用

A、创建文件:把/app文件夹的member.app.php文件复制一份,命名为:member_seller.app.php
打开member_seller.app.php文件,将里面的MemberApp修改为Member_sellerApp,不多,只有几个,不修改的话会提示找不到Member_sellerApp这个函数。
B、修改调用模板:查找member.index.html,修改为:member_seller.index.html

2、创建语言

打开/languages/sc-gbk文件夹,复制member.lang.php,另存为member_seller.lang.php。
打开member.lang.php文件,在后面添加上:(这个是为买家页面中提示用户开店做准备的,目前模板里没有这个功能,所以要新建这些字段)

'nollseller_remind' => '开店提醒',
'nollseller_state' => '未开通店铺',
'store_nollsellering' => '您目前不是卖家,您可以:<a href="/index.php?app=apply">开通店铺做生意</a>',
'edit_nollseller_info' => '开通店铺',

3、创建模板文件

把/themes/mall/模板文件夹名 的member.index.html和member.menu.html复制,分别重命名为:member_seller.index.html和member_seller.menu.html。

4、修改模板

A、调用单独的菜单文件:打开member_seller.index.html文件,把{include file=member.menu.html}改为:{include file=member_seller.menu.html}。
B、不是卖家的用户点开“我是卖家”链接或是直接访问这个页面的时候会提示“您不是卖家”的信息:在第二行下面插入<!--{if $store}-->,在文件的倒数第二行前面插入:(这里的行数仅供参考)

<!--{else}-->
<div class="particular">
<div class="particular_wrap">
<p class="defeated">
<span></span>
<b style="float: left; width:380px;">您还不是卖家</b>
<font style="clear: both; display:block; margin:0 0 0 50px;">
<a style="color:#aaa;" href="javascript:history.back()">>> 返回上一页</a><br />
</font>
</p>
</div>
</div>

<!--{/if}-->

C、使卖家页面的菜单调用专门的菜单列表:打开member_seller.menu.html

将<!--{foreach from=$_member_menu item=item text=im_buyer}-->修改为<!--{foreach from=$_member_seller_menu item=item text=im_buyer}-->

D、买家页面增加“开店提醒”,没有开店的用户下面显示一个框,提醒开店,打开member.index.html文件,原有的<!--{if $store}-->与<!--{/if}-->和之间的代码可以删除了,在这个位置增加下面的代码:

<!--{if $nollsellering}-->
<div class="wrap_line">
<div class="public_index">
<div class="information_index">
<h3 class="title">{$lang.nollseller_remind}</h3>
<div class="remind">
<dl>
<dt>{$lang.nollseller_state}</dt>
<dd>{sprintf lang=store_nollsellering var1=user.sgrade}</dd>
</dl>
<a href="index.php?app=apply" title="{$lang.edit_store_info}" class="btn1 pos2"><span class="pic2">{$lang.edit_nollseller_info}</span></a>
</div>
</div>

</div>
<div class="wrap_bottom"></div>
</div>
<!--{/if}-->

E、在用户中心页面创建“卖家中心”和“买家中心”的链接:打开member.header.html文件,在尾部增加

<div class="w shopnav">
<ul class="clearfix">
<li class="first{if $member_role eq 'member' || !$member_seller} current{/if}"><a href="{url app=member}"><strong>我是买家</strong></a></li>
<li class="last{if $member_role eq 'member_seller'} current{/if}"><a href="{url app=member_seller}" title="我是卖家"><strong>我是卖家</strong></a></li>
</ul>
</div>

这个文件下面显示的有网站通用的Nav列表,如果不想显示,也是在这个文件删除相应的代码就行了。

与上面代码相应的CSS是:

.w{width:1000px;}
.shopnav{margin-top:20px;border-bottom:2px #3E88CD solid}
.shopnav li{float:left; height:27px; line-height:27px;border-right:1px #B6CFEA solid;border-top:1px #B6CFEA solid;}
.shopnav li.first{border-left:1px #B6CFEA solid}
.shopnav li a{color:#404040; text-decoration:none;padding:0 25px;}
.shopnav li.current{ border-radius: 2px 0px 0px 0px; background-image: url(../images/member/seller.jpg); background-repeat: repeat-x; }
.shopnav li.current a{color:#fff;}
.shopnav li.last{border-radius: 0 2px 0 0;}

放在哪里,,,,你懂的。

F、修改其它涉及卖家中心的页面调用的菜单,如my_theme.index.html文件就是涉及卖家店铺主题的,打开文件,将<!--{foreach from=$_member_menu item=item text=im_buyer}-->修改为<!--{foreach from=$_member_seller_menu item=item text=im_buyer}--> ,其它的自行查找,大概是二十多个。

至此,模板这块基本上完了,当然,这只是一些基础的修改,不涉及更复杂的用户提示,实际使用中还可以增加更多的功能,自行发挥就行了。

5、程序修改

A、菜单修改:打开/app/frontend.base.php文件,找到$this->assign('_member_menu', $this->_get_member_menu());(大约在第555行)在下面增加上:$this->assign('_member_seller_menu', $this->_get_member_seller_menu());
找到function _get_member_menu()(大概在594行),看下这个函数,基本上是可以看懂的,把下面涉及卖家的信息删除,大约就是if (!$this->visitor->get('has_store') && Conf::get('store_allow'))之前的代码,要注意函数的开合标签。
在这个函数下面新建一个函数,主体内容就是刚才删除的内容,具体内容是:

/* 卖家菜单 */
function _get_member_seller_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',
),*/
),
);

if (!$this->visitor->get('has_store') && Conf::get('store_allow'))
{
/* 没有拥有店铺,且开放申请,则显示申请开店链接 */
/*$menu['im_seller'] = array(
'name' => 'im_seller',
'text' => Lang::get('im_seller'),
'submenu' => array(),
);

$menu['im_seller']['submenu']['overview'] = array(
'text' => Lang::get('apply_store'),
'url' => 'index.php?app=apply',
'name' => 'apply_store',
);*/
$menu['overview'] = array(
'text' => Lang::get('apply_store'),
'url' => 'index.php?app=apply',
);
}
if ($this->visitor->get('manage_store'))
{
/* 指定了要管理的店铺 */
$menu['im_seller'] = array(
'name' => 'im_seller',
'text' => Lang::get('im_seller'),
'submenu' => array(),
);

$menu['im_seller']['submenu']['my_goods'] = array(
'text' => Lang::get('my_goods'),
'url' => 'index.php?app=my_goods',
'name' => 'my_goods',
'icon' => 'ico8',
);
$menu['im_seller']['submenu']['groupbuy_manage'] = array(
'text' => Lang::get('groupbuy_manage'),
'url' => 'index.php?app=seller_groupbuy',
'name' => 'groupbuy_manage',
'icon' => 'ico22',
);
$menu['im_seller']['submenu']['my_qa'] = array(
'text' => Lang::get('my_qa'),
'url' => 'index.php?app=my_qa',
'name' => 'my_qa',
'icon' => 'ico18',
);
$menu['im_seller']['submenu']['my_category'] = array(
'text' => Lang::get('my_category'),
'url' => 'index.php?app=my_category',
'name' => 'my_category',
'icon' => 'ico9',
);
$menu['im_seller']['submenu']['order_manage'] = array(
'text' => Lang::get('order_manage'),
'url' => 'index.php?app=seller_order',
'name' => 'order_manage',
'icon' => 'ico10',
);
$menu['im_seller']['submenu']['my_store'] = array(
'text' => Lang::get('my_store'),
'url' => 'index.php?app=my_store',
'name' => 'my_store',
'icon' => 'ico11',
);
$menu['im_seller']['submenu']['my_theme'] = array(
'text' => Lang::get('my_theme'),
'url' => 'index.php?app=my_theme',
'name' => 'my_theme',
'icon' => 'ico12',
);
$menu['im_seller']['submenu']['my_payment'] = array(
'text' => Lang::get('my_payment'),
'url' => 'index.php?app=my_payment',
'name' => 'my_payment',
'icon' => 'ico13',
);
$menu['im_seller']['submenu']['my_shipping'] = array(
'text' => Lang::get('my_shipping'),
'url' => 'index.php?app=my_shipping',
'name' => 'my_shipping',
'icon' => 'ico14',
);
$menu['im_seller']['submenu']['my_navigation'] = array(
'text' => Lang::get('my_navigation'),
'url' => 'index.php?app=my_navigation',
'name' => 'my_navigation',
'icon' => 'ico15',
);
$menu['im_seller']['submenu']['my_partner'] = array(
'text' => Lang::get('my_partner'),
'url' => 'index.php?app=my_partner',
'name' => 'my_partner',
'icon' => 'ico16',
);
$menu['im_seller']['submenu']['coupon'] = array(
'text' => Lang::get('coupon'),
'url' => 'index.php?app=coupon',
'name' => 'coupon',
'icon' => 'ico19',
);
}

return $menu;
}
}

B、创建未开启店铺的标记变量nollsellering:打开/app/member.app.php文件,找到(大约在112行)

/* 待审核提醒 */
if ($user['state'] != '' && $user['state'] == STORE_APPLYING)
{
$this->assign('applying', 1);
}

在下面增加上:

/* 未开店提醒 */
if (!$this->visitor->get('has_store') && Conf::get('store_allow'))
{
$this->assign('nollsellering', 1);
}

 

这样就修改完了,基本上结束,有一个Bug就是,按钮状态是“我是买家”常亮的,选择“我是卖家”也不会改变,别的没有发现什么。

用到的文件:seller

Top