Authored by weiqingting

Merge branch 'web' of http://git.dev.yoho.cn/web/yohobuy into web

Showing 84 changed files with 3889 additions and 470 deletions

Too many changes to show.

To preserve performance only 84 of 84+ files are displayed.

... ... @@ -61,6 +61,103 @@
]
}
## 站点头部
{
gobuytype: 'gobuyboys',//购物车样式
searchcate: 'searchcateboys', //搜索栏样式
navbars: [{//一级导航
name_cn: '男生',
name_en: 'BOYS',
link: '',
classname: 'boys',
index_main: 0,
subnav: [{
name: '新品到着',
link: '',
index_sub:0,
thirdnav: [
{
title: '上装',
branditems: [
{
brandname: '背心',
link: ''
},
{
brandname: 'T恤',
link: ''
},
{
brandname: '衬衫',
link: ''
},
{
brandname: 'POLO',
link: ''
},
{
brandname: '毛衣/针织',
link: ''
}]
}
]
}, {
name: '品牌一览',
link: '',
thirdnav: []
}]
}],
myyoho: {
email: 'caomei@163.com',
viptype: '普通会员',
currentscore: 495,
totalscore: 600,
cardtype: '银卡',
infolist: [{
name: '待处理的订单',
link: '',
num: '0'
}, {
name: '我的收藏',
link: '',
num: '1'
}, {
name: '我的优惠券',
link: '',
num: '2'
}, {
name: '我的YOHO币',
link: '',
num: '1'
}, {
name: '我的退货换货',
link: '',
num: '1'
}],
updlink: ''
},
gobuy: {
gobuynum: 3
},
breadcrumbnav: [{
notend: {
link: 'http://www.yohobuy.com',
name: 'BOYS首页'
}
}, {
notend: {
link: 'http://www.yohobuy.com',
name: '上衣'
}
}, {
isend: {
link: 'http://list.yohobuy.com/?msort=1&gender=1,3',
name: '衬衫'
}
}]
}
## 男首
{
... ... @@ -69,7 +166,7 @@
{
slide: {
//大图列表
bigSlide: [
list: [
{
'href': '',
'img': ''
... ... @@ -77,7 +174,7 @@
...
],
//小图列表
smallSlide: [
pagination: [
{
'href': '',
'img': ''
... ... @@ -207,7 +304,7 @@
]
}
## 男首新品上架 ajax数据
### 男首新品上架 ajax数据
{
code:200, //返回状态
commodity:[
... ... @@ -222,8 +319,9 @@
]
}
## 男首优选品牌,logo品牌,ajax数据
### logo品牌,ajax数据
{
moreBrand: '', //更多商品链接
logoBrand: [
{
'href': '',
... ... @@ -233,355 +331,663 @@
]
}
## 搜索页
## 搜索、列表、NEW/SALE共用
### 左侧导航相关
{
search: {
//路径导航
pathNav: [...],
//筛选相关
filters: {
checkedConditions: {
clearUrl: '', //清空筛选链接
conditions: [
//正常情况下文字显示
leftContent: [
{
allSort: {
//全部品类
updateNum: 2, //更新总数
list: [
{
name: 'AA', //一级分类
num: 12 //一级分类更新数目
childList: [
{
name: 'AAA', //二级分类
href: '##', //二级分类跳转链接
num: 12 //二级分类更新数目
}
]
}
]
}
},
{
picLink: {
//图片导航
title: 'AA', //图片导航标题
list: [
{
href: '',
name: '暗黑'
},
//特殊情况下颜色显示
src: '' // 图片地址
}
]
}
},
{
newSales: {
//一周新品上架
updateNum: 123,
list: [
{
name: 'AAA',
href: '',
'color': '#f00'
},
...
num: 12,
}
]
},
//-- 筛选项数据Start(需要显示就传,不显示不传) --
channel: [
}
},
{
allDiscount: {
//全部折扣
updateNum: 111,
list: [
{
name: 'VVV',
href: '##',
num: 11
}
]
}
}
]
}
### 无搜索/筛选结果提示
通过**goods**字段控制页面相关元素的渲染与否,若无结果,不要传goods字段
无搜索结果必须传递搜索的*searchActionUrl*,比如:search.yohobuy.com;可选字段为*keyWord*
### 标准页面内容
{
//筛选相关
filters: {
checkedConditions: {
clearUrl: '', //清空筛选链接
conditions: [
//正常情况下文字显示
{
href: '',
name: 'Boys'
name: '暗黑'
},
...
],
sort: [
//特殊情况下颜色显示
{
name: '上衣',
sub: [
{
href: '',
name: 'T恤'
},
...
]
href: '',
'color': '#f00'
},
...
],
brand: {
default: [
{
href: '',
name: ''
},
...
],
//索引:index为索引键值(字母转化为小写)
brandIndex: [
{
index: 'all',
name: '全部'
},
{
index: '0-9',
name: '0 ~ 9'
},
{
index: 'a',
name: 'A'
},
...
],
brandShow: [
{
id: 1,
href: '',
index:'0-9', //与brandIndex中索引一致
name: '5cm',
key: '5cm' //key为品牌关键字,用于搜索和索引,保持小写
},
{
id: 2,
href: '',
index: 'k',
name: 'KTZ',
key: 'ktz'
},
...
],
price: [
{
href: '',
name: '0-239'
},
...
],
color: [
{
href: '',
name: '黑色',
rgb: '#000' //此处若为彩色和银色,需要传图片路径字符串:url('path/to/img')
},
...
],
size: [
]
},
//-- 筛选项数据Start(需要显示就传,不显示不传) --
channel: [
{
href: '',
name: 'Boys'
},
...
],
sort: [
{
name: '上衣',
sub: [
{
href: '',
name: ''
},
...
],
seniorChose: [
{
attr: 'style', //查找的键值
name: '风格',
showMulti: true, //是否显示多选按钮
sub: [
{
id: '',
href: '',
name: ''
},
...
]
name: 'T恤'
},
...
]
}
},
//操作Banner相关
opts: {
sortType: [
},
...
],
brand: {
default: [
{
href: '',
name: '默认'
name: ''
},
...
],
//索引:index为索引键值(字母转化为小写)
brandIndex: [
{
active: true, //当前选中
href: '',
name: '最新',
hasSortOrient: true, //是否有正逆序
desc: true //逆序排序(默认不传为正序)
index: 'all',
name: '全部'
},
{
index: '0-9',
name: '0 ~ 9'
},
{
index: 'a',
name: 'A'
},
...
],
brandShow: [
{
id: 1,
href: '',
name: '价格',
hasSortOrient: true
index:'0-9', //与brandIndex中索引一致
name: '5cm',
key: '5cm' //key为品牌关键字,用于搜索和索引,保持小写
},
{
id: 2,
href: '',
name: '折扣',
hasSortOrient: true
}
index: 'k',
name: 'KTZ',
key: 'ktz'
},
...
],
checks: [
price: [
{
name: '新品',
checked: true,
href: ''
href: '',
name: '0-239'
},
...
],
color: [
{
name: '打折',
href: ''
href: '',
name: '黑色',
rgb: '#000' //此处若为彩色和银色,需要传图片路径字符串:url('path/to/img')
},
{
name: '限量',
href: ''
}
...
],
fivePerLine: true,
sixPerLineHref: '',
//or
sixPerLine: true,
fivePerLineHref: '',
countPerPage => 120,
pageCounts => [
size: [
{
href: '',
count: 60
name: ''
},
...
],
curPage: 1,
pageCount: 30,
preHref: '', //若当前为第一页,不传此参数
nexHref: '' //若当前为最后一页,不传此参数
},
// 商品导航列表
allSort: {
//全部品类
updateNum: 2, //更新总数
list: [
seniorChose: [
{
name: 'AA', //一级分类
num: 12 //一级分类更新数目
childList: [
attr: 'style', //查找的键值
name: '风格',
showMulti: true, //是否显示多选按钮
sub: [
{
name: 'AAA', //二级分类
href: '##', //二级分类跳转链接
num: 12 //二级分类更新数目
}
id: '',
href: '',
name: ''
},
...
]
}
},
...
]
}
},
//操作Banner相关
opts: {
sortType: [
{
href: '',
name: '默认'
},
{
active: true, //当前选中
href: '',
name: '最新',
hasSortOrient: true, //是否有正逆序
desc: true //逆序排序(默认不传为正序)
},
{
href: '',
name: '价格',
hasSortOrient: true
},
{
href: '',
name: '折扣',
hasSortOrient: true
}
],
checks: [
{
name: '新品',
checked: true,
href: ''
},
{
name: '打折',
href: ''
},
{
name: '限量',
href: ''
}
],
//重要提示:页面筛选无结果时,接下来的参数不用传;
countPerPage => 120,
pageCounts => [
{
href: '',
count: 60
},
...
],
curPage: 1,
pageCount: 30,
preHref: '', //若当前为第一页,不传此参数
nexHref: '' //若当前为最后一页,不传此参数
//重要提示END
},
//重要提示:若无搜索或者筛选结果,则不传goods,totalCount和pager也都不传字段
goods: [
{
...//good
}
],
totalCount: 333, //共多少件商品
pager: '', //右下角分页HTML
//若为搜索导致的无结果,则传递关键词字段;筛选导致的不传
keyWord: '...',
searchActionUrl: ''
//重要提示END
//最近浏览<搜索无此内容>
latestWalk: [
{
href: '',
img: '',
salePrice: '',
marketPrice: ''
},
advNav: {
//图片导航
advNavTitle: 'AA', 图片导航标题
list: [
{
href: '',
src: '' // 图片地址
}
]
...
]
}
### 搜索页
{
search: {
//路径导航
pathNav: [...],
..//标准页面内容,见上
}
}
### 商品列表页
{
list: {
//若为品牌首页则需要
brandBanner: {
bannerHeight: 100, //banner高度
banner: '',
bannerHome: '',
bannerIntro: '', //品牌介绍页
coled: true //品牌是否收藏
},
advPic: {
//图片banner
advPicTitle: 'AA', 图片banner标题
list: [
pathNav: [],
brandAbout: '', //品牌介绍页传HTML文本,非品牌介绍页则不传
leftContent: [], //...
//品牌入口
shopEntry: {
home: '',
logo: '',
shopName: '',
sort: [
{
href: '',
src: '' // 图片地址
}
name: '上衣'
},
...
]
},
newSales: {
//一周新品上架
updateNum: 123,
list: [
{
name: 'AAA',
href: '',
num: 12,
//分类介绍
sortIntro: {
name: '',
enName: '',
desc: '',
img: ''
},
...,//标准页面内容,见上
}
}
### new/sale
{
newSale: {
banner: {
bannerHeight: 222,
img: ''
},
title: {
name: '全部商品',
count: 2555
},
leftContent: [],
..//标准页面内容,见上
}
}
## 逛
### 【公用】资讯
{
id: '',
classification: '最新',
isReco: true, //是否推荐
url: '',
isSquareImg: true, //是否是正方形图
img: '',
title: '',
editorUrl: '',
author: '',
pTime: '',
pView: '',
content: '',
tags: [
{
url: '',
tag: ''
},
...
],
liked: true,
like: 10,
comment: 10
}
### 【共用】右侧栏
{
exRecos: [
{
url: '',
img: '',
title: ''
},
..
],
hotTags: [
{
url: '',
tagName: ''
},
...
],
ads: [
{
url: '',
img: ''
},
...
]
}
### 首页
{
guang: {
slider: [
{
url: '',
img: ''
},
...
],
msgTypes: [
{
typeId: '',
isActive: true,
navUrl: '',
type: '最新'
},
...
],
msgs: [
{
...//资讯
}
],
msgPager: ''//HTML
}
}
### 列表页
{
guang: {
tag: '户外', //XX关联的文章
msgs: [
{
..//资讯
},
...
],
msgPager: ''
}
}
### 编辑页
{
guang: {
editor: {
avatar: '',
name: '',
intro: ''
},
msgs: [],
msgPager: ''
}
}
### 逛详情页
{
guang:{
id: 1, //详情页id
header: {
title: '', //大标题
avatar: '', //作者头像
name: '' , //作者名字
authorUrl: '', //作者主页url
intro: '', //作者简介
time: '', //时间
click: '', //点击数
commentNum: '' //评论数
},
content: [
{
pic: '' //内容大图
},
{
text: '' //内容文字
},
{
smallPic: [ //内容两张并列小图
'http://img02.static.yohobuy.com/cms/2015/06/26/12/027eb72bc880b4fe1aad361296c871c2ea.jpg',
'http://img02.static.yohobuy.com/cms/2015/06/26/12/027eb72bc880b4fe1aad361296c871c2ea.jpg'
]
},
{
relatedReco: { //相关推荐
recos: [
{
..//通用商品信息
}
...
],
moreReco: '', //标题是否有more,有传url,没有不传
}
]
}
],
brands: [ //相关品牌
{
'thumb' => '', //品牌图片
'name' => '004', //品牌名称
'url' => '' //品牌url
}
...
],
userInfo: { //用户点赞收藏
isLike: true, //当前用户是否点赞
likeNum: 84, //点赞次数
isCollected: true //当前用户是否收藏
},
allDiscount: {
//全部折扣
updateNum: 111,
list: [
tag: [ //内容标签
{
name: LEE, //标签内容
url: www.baidu.com //标签链接
}
...
],
relatedPost:[ //相关文章
{
url => '', //链接
thumb => '', //图片
title => '' //标题
}
...
],
commentInfo: '', //初始内容,用于登陆页跳转回来后的内容不丢失
comment: {
commentNum: 4, //如果没有评论,数字为0,list和commentPager可以不传
list: [ //评论列表
{
name: 'VVV',
href: '##',
num: 11
avatar: '', //评论用户头像
name: '', //用户名字
content: '', //评论内容
time: '' //发表时间
}
...
]
}
//商品列表
goods: [
//商品信息
}
}
## Passport
### 【公用】左侧YohoFamily LOGO
{
coverHref: '', //跳转链接,需要有跳转就传,不需要就不传
coverImg: '' //图片地址
}
### 登录页
{
passport: {
coverHref: '', //跳转链接,需要有跳转就传,不需要就不传
coverImg: '' //图片地址
countryCode: '86', //无+
countryName: '中国',
countryList: [
{
code: '',
name: ''
},
...
]
}
}
## 站点头部
### 注册页
{
gobuytype: 'gobuyboys',//购物车样式
searchcate: 'searchcateboys', //搜索栏样式
navbars: [{//一级导航
name_cn: '男生',
name_en: 'BOYS',
link: '',
classname: 'boys',
index_main: 0,
subnav: [{
name: '新品到着',
link: '',
index_sub:0,
thirdnav: [
registerPage: true, //用于加载js
passport: {
actionUrl: '/passport/register/mobileregister', //action
region: [
{
id: 86, //国家地区码
name: '中国',
selected: true
}
],
location: '+86', //默认在哪个地区
captchaUrl: 'http://www.yohobuy.com/passport/images?t=1449799445', //验证码请求地址
itemUrl' => '##', //服务条款地址
referUrl' => 'http://www.yohobuy.com/', //注册后跳转链接
loginUrl' => '/signin.html?refer=http://www.yohobuy.com/', //登录链接
coverHref' => '/passport', //右侧封面跳转链接
coverImg' => '##', //右侧封面地址
}
}
## Product
### 热销排行
{
hotrankPage: true, //引用hotrank.js
hotrank: [
{
slide: {
//大图列表
list: [
{
title: '上装',
branditems: [
{
brandname: '背心',
link: ''
},
{
brandname: 'T恤',
link: ''
},
{
brandname: '衬衫',
link: ''
},
{
brandname: 'POLO',
link: ''
},
{
brandname: '毛衣/针织',
link: ''
}]
}
]
}, {
name: '品牌一览',
link: '',
thirdnav: []
}]
}],
myyoho: {
email: 'caomei@163.com',
viptype: '普通会员',
currentscore: 495,
totalscore: 600,
cardtype: '银卡',
infolist: [{
name: '待处理的订单',
link: '',
num: '0'
}, {
name: '我的收藏',
link: '',
num: '1'
}, {
name: '我的优惠券',
link: '',
num: '2'
}, {
name: '我的YOHO币',
link: '',
num: '1'
}, {
name: '我的退货换货',
link: '',
num: '1'
}],
updlink: ''
},
gobuy: {
gobuynum: 3
'href': '',
'img': ''
},
...
]
}
},
breadcrumbnav: [{
notend: {
link: 'http://www.yohobuy.com',
name: 'BOYS首页'
{
popular: { //人气单品
name: '', //楼层标题
list: [
{
href: '', //链接
img: '', //图片
title: '', //商品名称
price: '', //商品原价
sPrice: '', //商品现价
rank: '' //排行
}
...
]
}
}, {
notend: {
link: 'http://www.yohobuy.com',
name: '上衣'
}
{
hotBrands: { //同上logo品牌 ajax数据
name: '' //楼层标题
}
}, {
isend: {
link: 'http://list.yohobuy.com/?msort=1&amp;gender=1,3',
name: '衬衫'
},
{
hotWeek: { //一周热卖
name: '' //楼层标题
nav: [ //一周热卖导航
{
textCn' => 'TOP100', //导航名称
'url' => '',
'sid' => 1 //对应ajax发送id
}
],
list: [ //同上面商品数据
{
...
}
...
]
}
}]
}
\ No newline at end of file
}
]
}
\ No newline at end of file
... ...
<?php
namespace Action;
use Index\HomeModel;
class WebAction extends AbstractAction
{
/**
* 设置头部
*
* @param string $channel (默认不设置)
* @return
*/
protected function setWebNavHeader($channel = '')
{
if(empty($channel)) {
$channel = \Index\HomeModel::getSwitchChannel();
}
else {//设置频道
\Index\HomeModel::setSwitchToCookie($channel);
}
$header = array(
'navbars'=>\Index\HomeModel::getNavBars($channel),
'gobytype'=> 'gobuy'.$channel,
'searchcate'=>'searchcate'.$channel,
'myyoho' => array(
'email'=>'hhh@126.com',
'viptype'=>'普通会员',
'currentscore' => 495,
'totalscore' => 600,
'cardtype' => '银卡',
'infolist' => array(
array(
'name' =>'待处理的订单',
'link' =>'',
'num' => '0'
),
array(
'name' =>'我的收藏',
'link' =>'',
'num' => '1'
),
array(
'name' =>'我的优惠券',
'link' =>'',
'num' => '2'
),
array(
'name' =>'我的YOHO币',
'link' =>'',
'num' => '1'
),
array(
'name' =>'我的退货换货',
'link' =>'',
'num' => '1'
)
),
'updlink' => ''
),
'gobuy'=> array(
'gobuynum' =>3
),
'breadcrumbnav'=> array(
array(
'notend'=>array(
'link' => 'http=>//www.baidu.com',
'name' => 'BOYS首页'
)
),
array(
'notend'=>array(
'link' => 'http=>//www.baidu.com',
'name' => '上衣'
)
),
array(
'isend'=>array(
'link' => 'http=>//www.baidu.com',
'name' => '衬衫'
)
)
)
);
$this->_view->assign('headerdata', $header);
}
}
\ No newline at end of file
... ...
... ... @@ -41,6 +41,7 @@ class Yohobuy
'android' => 'fd4ad5fcfa0de589ef238c0e7331b585',
'iphone' => 'a85bb0674e08986c6b115d5e3a4884fa',
'ipad' => 'ad9fcda2e679cf9229e37feae2cdcf80',
'web' => '0ed29744ed318fd28d2c07985d3ba633',
);
/**
... ... @@ -55,10 +56,13 @@ class Yohobuy
// 苹果IPAD
elseif (strstr($_SERVER['HTTP_USER_AGENT'], 'iPad')) {
return 'ipad';
}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'android')) {
return 'android';
}
// 其它
else {
return 'android';
return 'web';
}
}
... ...
<?php
namespace Configs;
class ChannelConfig
{
/**
* 最新上架分类
*/
public static $newArrivalSortList = array(
//女首上架分类
'girls' => array(
array(
'misort' => 20,
'viewNum' => 4
),// 棉衣
array(
'misort' => 18,
'viewNum' => 4
),// 羽绒服
array(
'misort' => 22,
'viewNum' => 4
),// 风衣/大衣
array(
'misort' => 44,
'viewNum' => 4
),//休闲/运动鞋
array(
'misort' => 21,
'viewNum' => 4
),// 夹克
array(
'misort' => 16,
'viewNum' => 4
),// 卫衣
array(
'misort' => 26,
'viewNum' => 4
),// 休闲裤
array(
'misort' => 45,
'viewNum' => 4
),//靴子
array(
'misort' => 226,
'viewNum' => 4
),// 防风外套
array(
'misort' => 27,
'viewNum' => 4
),// 牛仔裤
array(
'misort' => 257,
'viewNum' => 4
),//毛衣/针织
array(
'misort' => 11,
'viewNum' => 4
),// T恤
array(
'misort' => 31,
'viewNum' => 4
),//连衣裙
array(
'misort' => 32,
'viewNum' => 4
),//半身裙
array(
'misort' => 50,
'viewNum' => 4
),//手拎包/单肩包
array(
'misort' => 60,
'viewNum' => 4
),//帽子
array(
'misort' => 49,
'viewNum' => 4
),//双肩包
array(
'misort' => 65,
'viewNum' => 4
),//首饰
array(
'misort' => 314,
'viewNum' => 4
),//围巾
array(
'misort' => 59,
'viewNum' => 4
),//手表
),
//潮童上架分类
'kids' => array(
array(
'misort' => 404,
'viewNum' => 4
),// 夹克
array(
'misort' => 396,
'viewNum' => 4
),// 卫衣
array(
'misort' => 369,
'viewNum' => 4
),// 休闲裤
array(
'misort' => 406,
'viewNum' => 4
),// 大衣/风衣
array(
'misort' => 368,
'viewNum' => 4
),// 休闲/运动鞋
array(
'misort' => 366,
'viewNum' => 4
),// T恤
array(
'misort' => 400,
'viewNum' => 4
),// 毛衣/针织
array(
'misort' => 367,
'viewNum' => 4
),// 衬衫
array(
'misort' => 388,
'viewNum' => 4
),// 牛仔裤
array(
'misort' => 392,
'viewNum' => 4
),// 双肩包
array(
'misort' => 384,
'viewNum' => 4
),// 打底裤/紧身裤
array(
'misort' => 371,
'viewNum' => 4
),// 连衣裙
array(
'misort' => 421,
'viewNum' => 4
),// 围巾
array(
'misort' => 425,
'viewNum' => 4
),// 围兜
),
//创意生活上架分类
'lifestyle' => array(
array(
'sort' => 171,
'viewNum' => 5
),//耳机
array(
'sort' => 398,
'viewNum' => 5
),//智能装备
array(
'sort' => 185,
'viewNum' => 5
),//相机
array(
'misort' => 259,
'viewNum' => 5
),//美妆
array(
'sort' => 267,
'viewNum' => 5
),//杯子/水壶
array(
'sort' => 313,
'viewNum' => 5
),//手机/ipad壳套
array(
'sort' => 211,
'viewNum' => 5
),//数码配件
array(
'sort' => 292,
'viewNum' => 5
),//玩偶
array(
'sort' => 272,
'viewNum' => 5
),//储物收纳
array(
'sort' => 183,
'viewNum' => 5
),//居家用品
array(
'sort' => 273,
'viewNum' => 5
),//厨具/餐具
array(
'sort' => 271,
'viewNum' => 5
),//靠枕/靠垫/抱枕
),
);
}
\ No newline at end of file
... ...
<?php
namespace LibModels\Web\Home;
use Api\Yohobuy;
use Api\Sign;
class IndexData
{
//分类服务
const URL_OPERATIONS_CATEGORY = 'operations/service/v1/category';
//资源位地址
const URL_OPERATIONS_RESOURCE_GET = 'operations/api/v5/resource/get';
/**
* 获取导航数据
*
* @param int $status (default)
* @param string $fields (default)
* @return array
*/
public static function getNavData($status = 1, $fields = 'id,sort_name,sort_name_en,parent_id,sort_url,sort_ico,content_code,is_new,is_hot,separative_sign')
{
$params = array('parent_id'=>'','platform'=>'web',
'status'=> $status,'fields'=> $fields
);
return Yohobuy::yarClient(Yohobuy::SERVICE_URL . self::URL_OPERATIONS_CATEGORY,'getCategory', $params, false);
}
/**
* 获取资源数据
*
* @param string $content_code
* @param string $client_type
* @return array
*/
public static function getResourceData($content_code, $client_type = 'web')
{
// 构建必传参数
$params = Yohobuy::param();
$params['content_code'] = $content_code;
$params['client_type'] = $client_type;
$params['client_secret'] = Sign::getSign($params);
return Yohobuy::get(Yohobuy::SERVICE_URL . 'operations/api/v5/resource/get', $params);
}
}
\ No newline at end of file
... ...
<?php
namespace LibModels\Web\Product;
class SearchData extends \LibModels\Wap\Product\SearchData
{
/**
* 根据分类列表获取商品信息
*
* @param array $params
* @param array $sortList
* @return array
*/
public static function getSearchDataBySort(array $params, array $sortList)
{
$data = array();
foreach ($sortList as $v) {
if(empty($v['viewNum'])){
continue;
}
$params = array_merge($params, $v);
$list = self::searchElasticByCondition($params, true);
$productList = empty($list['data']['product_list']) ? array() : $list['data']['product_list'];
if(count($productList) < $v['viewNum']){
continue;
}
$data = array_merge($data, $productList);
}
return $data;
}
}
\ No newline at end of file
... ...
<?php
namespace Plugin\DataProcess\WebChannel;
class Channel
{
public static $formatChannel = array(
'boys' => '\Plugin\DataProcess\WebChannel\Channel\Kids',
'girls' => '\Plugin\DataProcess\WebChannel\Channel\Girls',
'kids' => '\Plugin\DataProcess\WebChannel\Channel\Kids'
);
public static function getFormat($channel, $data)
{
//通用处理器
$result = Process::getContent($data, $channel);
$channelResult = array();
if(isset(self::$formatChannel[$channel]))
{
$class = self::$formatChannel[$channel];
$channelResult = $class::format($data);
}
//组合数据
$result = $result + $channelResult;
ksort($result);
return array_values($result);
}
}
... ...
<?php
namespace Plugin\DataProcess\WebChannel\Channel;
abstract class AbstractChannel
{
/***
* 处理数据
* @param array $resource
* @return array[以key方式存储数据]
*/
public static function format($resource){}
}
\ No newline at end of file
... ...
<?php
namespace Plugin\DataProcess\WebChannel\Channel;
class Kids extends AbstractChannel
{
/**
* {@inheritDoc}
* @see \Plugin\DataProcess\WebChannel\Channel\AbstractChannel::format()
*/
public static function format($resource)
{
$data = array();
foreach($resource as $key => $val)
{
}
return $data;
}
}
\ No newline at end of file
... ...
<?php
namespace Plugin\DataProcess\WebChannel;
use Plugin\Images;
use Plugin\Helpers;
/**
* web版通用处理器
*/
class Process
{
public static function getContent(array &$data, $type = 1)
{
//组合处理数据
$result = self::mergeProcess($data, $type);
foreach($data as $key => $val)
{
$fun = $val['template_name'];
if (empty($val['data']) || !is_callable("self::$fun")) {
continue;
}
//单个处理数据
$build = self::$fun($val, $type);
if(!empty($build))
{
$result[$key] = $build;
}
unset($data[$key]);
}
return $result;
}
/**
* 热门分类处理
*
* @param array $data
* @param string $type
* @return array
*/
public static function hotCategory(array $data, $type)
{
$data = $data['data'];
$result = $temp = array();
$temp = array('name' => $data['name'],
'navs' => array(),'tplrecommend'=> array());
foreach($data['navs']['list'] as $val) {
$temp['navs'][] = array(
'id'=>'', 'href'=> $val['url'],
'name' => $val['name']
);
}
foreach($data['menuNav']['blocks'] as $val) {
$val['img'] = Images::getImageUrl($val['img'], 185, 76, 1);
$val['url'] = Helpers::transUrl($val['url'], $type);
$temp['tplrecommend']['keyword'][] = array('href'=> $val['url'],'name'=> $val['title'], 'img'=>$val['img']);
}
foreach($data['menuNav']['list'] as $val) {
if(empty($val['name']) && empty($val['url']))
{
continue;
}
$val['url'] = Helpers::transUrl($val['url'], $type);
$temp['tplrecommend']['category'][] = array('name'=> $val['name'],'url'=> $val['url']);
}
foreach($data['imgs'] as $key => $val) {
$w = 185; $h = 248;
if($key == 0)
{
$w = 377;
$h = 504;
}
$val['img'] = Images::getImageUrl($val['img'], $w, $h, 1);
$val['url'] = Helpers::transUrl($val['url'], $type);
if($key == 0)
{
$temp['tplrecommend']['brands'][] = array('href'=> $val['url'],'name'=> $val['title'],'img'=> $val['img']);
}
else
{
$temp['tplrecommend']['types'][] = array('href'=> $val['url'],'name'=> $val['title'],'img'=> $val['img']);
}
}
$result['recommend'] = $temp;
return $result;
}
/**
* banner处理
*
* @param array $data
* @param string $type
* @return array
*/
public static function focus(array $data, $type)
{
$result = array();
$temp = array();
$width = 1150;
$height = 450;
if($data['focus_type'] == 1) {
foreach($data['data'] as $val) {
$val['src'] = Images::getImageUrl($val['src'], $width, $height, 1);
$val['url'] = Helpers::transUrl($val['url'], $type);
$temp[] = array('href'=> $val['url'],'img' => $val['src']);
}
$result['slide']['list'] = $temp;
}
return $result;
}
/**
* 组合数据处理
*
* @param array $data
* @param string $type
* @return array
*/
public static function mergeProcess(array &$data, $type)
{
$result = array();
foreach($data as $key => $val)
{
if(isset($data[$key]) && isset($data[$key+3])) //人气单品[template: text & textNav & goods & floor]
{
$temp = array('singlehot' => array('name'=>'','imgHot'=> array(),'brands'=> array()));
if($data[$key]['template_name'] == 'text' && $data[$key+1]['template_name'] == 'textNav'
&& $data[$key+2]['template_name'] == 'goods' && $data[$key+3]['template_name'] == 'floor')
{
//text模版
$temp['singlehot']['name']= $val['data']['text'];
//goods模版
foreach($data[$key+2]['data'] as $val)//TODO
{
$temp['singlehot']['imgHot'][] = array('href'=> '',//$val['url'],
'name' => '','price'=> '');
}
//floor模版
foreach($data[$key+3]['data'] as $val)
{
$val['src'] = Images::getImageUrl($val['src'], 185, 86, 1);
$val['url'] = Helpers::transUrl($val['url'], $type);
$temp['singlehot']['brands'][] = array('href' => $val['url'],
'img' => $val['src'],'name'=>$val['title']);
}
$result[$key] = $temp;
unset($data[$key], $data[$key+1], $data[$key+2], $data[$key+3]);
}
}
if(isset($data[$key]) && isset($data[$key+1])) //优选品牌 [ template: text & focus ]
{
$temp = array('preferenceBrands'=> array('name'=>'', 'slider'=> array()));
if($data[$key]['template_name'] =='text' && $data[$key+1]['template_name'] =='focus')
{
$temp['preferenceBrands']['name'] = $val['data']['text'];
//focus 分类
foreach($data[$key+1]['data'] as $val)
{
$width = 320;
$height = 430;
$val['src'] = Images::getImageUrl($val['src'], $width, $height, 1);
$val['url'] = Helpers::transUrl($val['url'], $type);
$temp['preferenceBrands']['slider'][] = array('href'=> $val['url'],'img'=> $val['src']);
}
$result[$key] = $temp;
unset($data[$key], $data[$key+1]);
}
}
if(isset($data[$key]) && isset($data[$key+2])) //girlkids[ template: text & textNav & goods]
{
$temp = array('girlkids'=> array('name'=>'', 'imgHot'=> array()));
if($data[$key]['template_name'] =='text' && $data[$key+2]['template_name'] =='goods')
{
$temp['girlkids']['name'] = $val['data']['text'];
foreach($data[$key+2]['data'] as $val)//TODO
{
$temp['girlkids']['imgHot'][] = array('href'=> '',//$val['url'],
'name' => '','price'=>'');
}
$result[$key] = $temp;
unset($data[$key], $data[$key+1], $data[$key+2]);
}
}
}
return $result;
}
}
\ No newline at end of file
... ...
... ... @@ -437,6 +437,26 @@ class Helpers
}
/**
* 根据url获取拼接之后的地址,用于用户清理缓存
* @param string $url url地址
* @param string $channel 频道,默认为woman
*
* @return string 处理之后的地址
*/
public static function transUrl($url, $channel='woman') {
$extra = '';
if(!empty($url) && stripos($url, '?') === false) {
$extra = '?channel='.$channel;
}
if(!empty($url) && stripos($url, '?') !== false){
$extra = '&channel='.$channel;
}
return $url . $extra;
}
/**
* 各国手机号规则
*/
private static function areaMobielVerify($mobile, $area = 86)
... ...
{{> layout/header}}
{{#if errorPage}}
<div class="err-page err-404 screen">
<div class="tips-404">
<p class="tip">很抱歉,您访问的页面不存在!</p>
<p class="links">
<a href="{{newProductLink}}">浏览新品</a>
&nbsp;&nbsp;
<a href="http://www.yohobuy.com/">返回首页</a>
</p>
</div>
</div>
{{/if}}
{{> layout/footer}}
\ No newline at end of file
... ...
{{> layout/header}}
{{# guang}}
<div class="guang-detail-page guang-page yoho-page clearfix" data-id="{{id}}">
<div class="left-side detail-body">
{{# header}}
<div class="detail-title">{{title}}</div>
<div class="article-info clearfix">
<div class="article-author">
<div class="author-avatar">
<img src="{{avatar}}" alt="">
</div>
</div>
<div class="author-info">
<a class="author-name" href="{{authorUrl}}">{{name}}</a>
</div>
<div class="article-status clearfix">
<span class="article-time">{{time}}</span>
<span class="article-click">点击:{{click}}</span>
<span id="article-comment" class="article-comment"><em class="comment-num">{{commentNum}}</em>条评论</span>
</div>
</div>
{{/ header}}
<div class="article-main">
{{# content}}
{{# pic}}
<div class="article-pic block">
<img class="lazy" data-original="{{.}}">
</div>
{{/ pic}}
{{# text}}
<div class="article-text block">
<p>{{.}}</p>
</div>
{{/ text}}
{{#if smallPic}}
<div class="article-small-pic block clearfix">
{{# smallPic}}
<img class="lazy" data-original="{{.}}">
{{/ smallPic}}
</div>
{{/if}}
{{# relatedReco}}
<div class="related-reco block clearfix">
<div class="block-header">
相关推荐
{{# moreReco}}
<a class="more-reco" href="{{.}}">MORE ></a>
{{/ moreReco}}
</div>
<div class="recos clearfix">
{{# recos}}
{{> product/good}}
{{/ recos}}
</div>
</div>
{{/ relatedReco}}
{{/ content}}
</div>
<div class="related-brand block clearfix">
<div class="block-header">相关品牌</div>
<div class="brands">
{{# brands}}
<div class="brand">
<a class="thumb" href="{{url}}">
<img class="lazy" data-original="{{thumb}}">
</a>
<p class="brand-name">{{name}}</p>
</div>
{{/ brands}}
</div>
</div>
{{# userInfo}}
<div class="user-handle">
<ul class="clearfix">
<li id="prise-btn" class="like-status{{#isLike}} liked{{/isLike}}">
<a href="javascript:;">
<i class="iconfont">&#xe626;</i>
<span class="like-num">{{likeNum}}</span>
</a>
</li>
<li id="collect-btn" class="sort-collect{{#isCollected}} collected{{/isCollected}}">
<a href="javascript:;">
<i class="iconfont">&#xe616;</i>
<span>收藏</span>
<span class="cancel-collect">取消收藏</span>
</a>
</li>
</ul>
</div>
{{/ userInfo}}
<div class="article-bottom-info clearfix">
{{#if tag}}
<div class="article-tag clearfix">
<i class="tag-icon iconfont">&#xe624;</i>
<ul class="clearfix">
{{# tag}}
<li>
<a href="{{url}}">{{name}}</a>
</li>
{{/ tag}}
</ul>
</div>
{{/if}}
<div class="article-share">
<span class="share-to">
分享至:
<a class="share-a share-sina" data-type="weibo" title="分享到新浪微博"></a>
<a class="share-a share-weixin" data-type="weixin" title="分享到微信朋友圈"></a>
<a class="share-a share-tencent" data-type="tqq" title="分享到腾讯微博"></a>
<a class="share-a share-qzone" data-type="qzone" title="分享到QQ空间"></a>
<a class="share-a share-qq" data-type="qq" title="分享到QQ好友"></a>
<a class="share-a share-renren" data-type="renren" title="分享到人人网"></a>
<a class="share-a share-douban" data-type="douban" title="分享到豆瓣"></a>
<div class="shareWeixin"></div>
</span>
<input id="share-img" type="hidden" value="{{sharedImg}}">
<input id="share-title" type="hidden" value="{{title}}">
<input id="weixin-url" type="hidden" value="{{weixinUrl}}">
</div>
</div>
{{#if relatedPost}}
<div class="detail-related-posts">
<ul class="clearfix">
{{# relatedPost}}
<li>
<a href="{{url}}">
<span class="bg-img">
<img src="{{thumb}}" alt="">
</span>
<div class="post-title">
<h2>{{title}}</h2>
</div>
</a>
</li>
{{/ relatedPost}}
</ul>
</div>
{{/if}}
<div id="comment-area" class="comment-area">
<div class="comment-textarea">
<textarea id="comment-info" placeholder="我有话要说。。。">{{commentInfo}}</textarea>
</div>
<div class="comment-publish clearfix">
<span id="word-count-tip" class="word-count-tip"></span>
<a id="comment-btn" class="publish-btn disable">评论</a>
</div>
<div id="pjax-container" class="comments-wrap">
{{# comment}}
<h4>
<span class="comment-num">{{commentNum}}</span>
条评论 <i></i>
</h4>
<p class="comments-empty">还没有评论,快抢沙发吧</p>
<div class="commnets-resultwrapper">
<ul class="comments-list">
{{# list}}
<li class="clearfix">
<div class="avatar">
<img class="comment-user-avatar" src="{{avatar}}" alt=""></div>
<div class="comment-info">
<p class="comment-user-name">{{name}}</p>
<p class="comment-content">{{content}}</p>
<p class="comment-time">{{time}}</p>
</div>
</li>
{{/ list}}
</ul>
<div class="comment-pager pager">{{{commentPager}}}</div>
</div>
{{/ comment}}
</div>
</div>
</div>
<div class="right-side detail-side">
{{> guang/right-side}}
</div>
</div>
{{/ guang}}
{{> layout/footer}}
... ...
{{> layout/header}}
<div class="guang-editor-page guang-page yoho-page clearfix">
{{# guang}}
{{# editor}}
<div class="editor-info clearfix">
<div class="author-avatar">
<img src="{{avatar}}" alt="">
</div>
<div class="author-info">
<p class="author-name">{{name}}</p>
<p class="author-introduce">{{intro}}</p>
</div>
</div>
{{/ editor}}
<div class="left-side">
<div id="msg-list" class="msg-list">
{{# msgs}}
{{> guang/msg}}
{{/ msgs}}
</div>
<div class="msg-pager pager">
{{{msgPager}}}
</div>
</div>
<div class="right-side">
{{> guang/right-side}}
</div>
{{/ guang}}
</div>
{{> layout/footer}}
\ No newline at end of file
... ...
{{> layout/header}}
<div class="guang-index-page guang-page yoho-page clearfix">
{{# guang}}
<div class="left-side">
<div id="slider" class="slider">
<ul class="slide-wrapper">
{{#each slider}}
<li>
<a href="{{url}}">
{{#if @first}}
<img src="{{img}}">
{{^}}
<img class="lazy" data-original="{{img}}">
{{/if}}
</a>
</li>
{{/each}}
</ul>
</div>
<div id="pjax-container" class="msg">
<ul class="msg-nav">
{{# msgTypes}}
<li data-type="{{typeId}}" {{#if isActive}}class="actived"{{/if}}>
<a class="pjax-link" href="{{navUrl}}">{{type}}</a>
</li>
{{/ msgTypes}}
</ul>
<div id="msg-list" class="msg-list">
{{# msgs}}
{{> guang/msg}}
{{/ msgs}}
</div>
<div class="msg-pager pager">
{{{msgPager}}}
</div>
</div>
</div>
<div class="right-side">
{{> guang/right-side}}
</div>
{{/ guang}}
</div>
{{> layout/footer}}
\ No newline at end of file
... ...
{{> layout/header}}
<div class="guang-list-page guang-page yoho-page clearfix">
{{# guang}}
<div class="left-side">
<div class="tag-header">
<span>{{tag}}</span>
关联的文章
</div>
<div id="msg-list" class="msg-list">
{{# msgs}}
{{> guang/msg}}
{{/ msgs}}
</div>
<div class="msg-pager pager">
{{{msgPager}}}
</div>
</div>
<div class="right-side">
{{> guang/right-side}}
</div>
{{/ guang}}
</div>
{{> layout/footer}}
\ No newline at end of file
... ...
{{> layout/simple-header}}
<div class="back-page passport-page yoho-page clearfix">
{{# back}}
{{> passport/cover}}
<div class="content">
<div class="back-header clearfix">
<h2 class="title">找回密码</h2>
<span id="country-code" class="country-code">
<em>{{countryName}} +{{countryCode}}</em>
<i class="iconfont">&#xe61d;</i>
</span>
<ul id="country-code-list" class="country-code-list">
{{# countryList}}
<li data-cc="+{{code}}">{{name}} +{{code}}</li>
{{/ countryList}}
</ul>
</div>
<form id="back-form" class="back-form" action="">
<input id="country-code-hide" type="hidden" name="country-code" value="+86">
<ul>
<li class="input-container-li clearfix">
<input id="phone-num" class="input va phone-num" type="text" name="phoneNum" placeholder="邮箱/手机号码" autocomplete="off">
<ul id="tip-panel" class="tip-panel"></ul>
<span id="account-err" class="err-tip hide">
<i></i>
<em>账户名不能为空</em>
</span>
</li>
<li class="input-container-li clearfix">
<input id="captcha" class="input va captcha" type="text" name="captcha" placeholder="验证码" autocomplete="off" maxlength="4">
<img id="captcha-img" class="captcha-img" src="http://www.yohobuy.com/passport/images" alt="">
<a id="change-captcha" class="link change-captcha">换一张</a>
<span id="captcha-err" class="err-tip captcha-err hide">
<i></i>
<em>验证码不能为空</em>
</span>
</li>
<li class="input-container-li clearfix">
<input name="refer" id="refer" type="hidden" value="http%3A%2F%2Fwww.yohobuy.com%2F">
<input id="find-btn" class="btn find-btn disable" type="submit" value="下一步" disabled="">
</li>
</ul>
</form>
</div>
{{/ back}}
</div>
{{> layout/footer}}
\ No newline at end of file
... ...
{{> layout/simple-header}}
<div class="reset-pwd-page back-page passport-page yoho-page clearfix">
{{# resetPwd}}
{{> passport/cover}}
<div class="content">
<h2 class="title2">重置密码</h2>
<form id="reset-pwd-form" class="reset-pwd-form" method="POST" action="/passport/back/update">
<ul>
<li class="input-container-li po-re">
<input id="pwd" class="input va pwd" type="password" name="pwd" placeholder="新密码" maxlength="20">
<div class="pwd-intensity-container">
<span class="pwd-intensity low">低</span>
<span class="pwd-intensity mid">中</span>
<span class="pwd-intensity high">高</span>
</div>
<div id="pwd-tips" class="pwd-tips hide">
<div class="default" id="pwd-tip1"><i></i>密码只支持6-20位字符</div>
<div class="default" id="pwd-tip2"><i></i>建议由字母、 数字、 符号两种以上组合</div>
</div>
<span id="pwd-err" class="err-tip hide">
<i></i>
<em>请输入密码</em>
</span>
</li>
<li class="input-container-li clearfix po-re">
<input id="re-input" class="input va re-input repwd" type="password" name="re-input" placeholder="再次输入" maxlength="20">
<span id="repwd-err" class="err-tip hide">
<i></i>
<em>请输入密码确认</em>
</span>
</li>
<li class="input-container-li clearfix">
<input type="hidden" name="code" value="159bI6arxsuaPBxG2iV9OE9BrgDnAPiTecUqYh2iUC3ntt6S0eOtxXpVu+jWIlveXx9NRuwS9zdrXzcUyOd+d3ikzYBAo0k">
<input id="reset-pwd-btn" class="btn reset-pwd-btn" type="submit" value="提交" disabled="">
</li>
</ul>
</form>
</div>
{{/ resetPwd}}
</div>
{{> layout/footer}}
\ No newline at end of file
... ...
{{> layout/simple-header}}
<div class="reset-success-page back-page passport-page yoho-page clearfix">
{{# resetSuccess}}
{{> passport/cover}}
<div class="content">
<div class="success-text">
<i class="iconfont">&#xe620;</i><span>恭喜!</span>密码修改成功,&nbsp;<span id="count-down">5</span>&nbsp;&nbsp;秒后将跳转至首页
</div>
<a class="success-btn" href="/">随便逛逛</a>
</div>
{{/ resetSuccess}}
</div>
{{> layout/footer}}
... ...
{{> layout/simple-header}}
<div class="send-email-page passport-page yoho-page clearfix">
{{# sendEmail}}
{{> passport/cover}}
<div class="content">
<div class="send-tips"><i class="iconfont">&#xe61e;</i>我们已经把验证邮件发送至您的邮箱,请在24小时内通过邮件内的<br>链接继续设置新的密码。</div>
<div class="no-find">没有收到?到您邮箱的垃圾邮件里找找。</div>
<div class="to-my-email">
<a href="http://mail.qq.com" target="_blank" class="btn_b_ar_r">去我的邮箱&gt;</a>
</div>
</div>
{{/ sendEmail}}
</div>
{{> layout/footer}}
\ No newline at end of file
... ...
{{> layout/simple-header}}
<div class="verification-page back-page passport-page yoho-page clearfix">
{{# verification}}
{{> passport/cover}}
<div class="content">
<form id="verification-form" class="verification-form" method="POST" action="/passport/back/backmobile">
<ul>
<li class="head-title">验证身份</li>
<li class="po-re">
<label class="pn-label">手机号码</label>
<span class="country-code">+86</span>
<span class="phone-num">18115624066</span>
</li>
<li class="po-re">
<input id="captcha" class="input va captcha" type="text" name="captcha">
<input id="send-captcha" class="btn send-captcha" type="button" value="发送验证码" disabled="">
<div id="captcha-tip" class="captcha-tips"><i class="iconfont">&#xe61f;</i>验证码已发送至您的手机,请查收</div>
<span id="err-tip" class="err-tip hide">
<i></i>
<em>请输入验证码</em>
</span>
</li>
<li>
<input name="area" id="area" type="hidden" value="86">
<input name="mobile" id="mobile" type="hidden" value="18115624066">
<input name="captchaPic" id="captchaPic" type="hidden" value="g7ce">
<input name="refer" id="refer" type="hidden" value="">
<input id="next-step" class="btn next-step disable" type="submit" value="下一步" disabled="">
</li>
</ul>
</form>
</div>
{{/ verification}}
</div>
{{> layout/footer}}
\ No newline at end of file
... ...
{{> layout/simple-header}}
<div class="login-page passport-page yoho-page clearfix">
{{# passport}}
{{> passport/cover}}
<div class="content">
<form id="login-form" method="POST" action="/passport/index/login">
<ul class="login-ul">
<li class="relative clearfix">
<h2 class="title">会员登录</h2>
<span id="country-code" class="country-code right">
<em>{{countryName}} +{{countryCode}}</em>
<i class="iconfont">&#xe600;</i>
<ul id="country-list" class="country-list">
{{#each countryList}}
<li data-cc="{{code}}">{{name}} +{{code}}</li>
{{/each}}
</ul>
</span>
</li>
<li class="relative">
<input id="account" class="account input va" name="account" type="text" placeholder="邮箱/手机号码" autocomplete="off">
<ul id="email-autocomplete" class="email-autocomplete hide"></ul>
<span class="err-tip hide">
<i></i>
<em></em>
</span>
</li>
<li class="relative">
<input id="password" class="password input va" name="password" type="text" placeholder="密码" autocomplete="off" maxlength="20">
<span id="caps-lock" class="caps-lock hide">大写状态开启</span>
<span class="err-tip hide">
<i></i>
<em>请输入密码</em>
</span>
</li>
<li>
<span id="login-btn" class="login-btn btn">登录</span>
</li>
<li class="other-opts">
<span class="remeber-me">
<i class="iconfont">&#xe613;</i>
记住登录状态
</span>
<span class="right">
<a class="forget-password" href="{{forgetPwd}}">忘记密码?</a>
|
<a class="fast-reg" href="{{fastReg}}">快速注册</a>
</span>
</li>
<li class="third-party-login">
<a href="{{qqLogin}}">
<span class="icon qq"></span>
</a>
<a href="{{weiboLogin}}">
<span class="icon weibo"></span>
</a>
<a href="{{alipayLogin}}">
<span class="icon alipay"></span>
</a>
<a href="{{doubanLogin}}">
<span class="icon douban"></span>
</a>
<a href="{{renrenLogin}}">
<span class="icon renren"></span>
</a>
</li>
</ul>
<input id="country-code-hide" name="countryCode" type="hidden" value="{{countryCode}}">
</form>
</div>
{{/ passport}}
</div>
{{> layout/footer}}
\ No newline at end of file
... ...
{{> layout/header}}
<div class="login-page passport-page yoho-page clearfix">
{{# passport}}
{{> passport/cover}}
<div class="content">
<div class="register-page">
<form id="register-form" class="register-form" method="POST" action="{{actionUrl}}" autocomplete="off">
<ul>
<li class="clearfix">
<select id="region" class="region" name="region">
{{#each region}}
<option {{#if selected}}selected="selected"{{/if}} value="{{id}}">{{name}}</option>
{{/each}}
</select>
</li>
<li class="clearfix" data-index="0">
<span id="country-code" class="country-code">{{location}}</span>
<input value="" id="phone-num" class="input va phone-num" type="text" name="phoneNum" placeholder="请输入手机号码" autocomplete="off">
</li>
<li class="w330 clearfix" data-index="1">
<input id="captcha" class="input va captcha" type="text" name="captcha" placeholder="图形验证码" autocomplete="off" maxlength="4">
<img id="captcha-img" class="captcha-img" src="{{captchaUrl}}" alt="">
<a class="link change-captcha">换一张</a>
</li>
<li class="clearfix" data-index="2">
<input id="msg-captcha" class="input va msg-captcha" type="text" name="msgCaptcha" placeholder="短信验证码" autocomplete="off" maxlength="4">
<input id="send-captcha" class="btn send-captcha disable" type="button" value="获取短信验证码">
<span id="msg-tip" class="hide msg-tip">短信验证码已发送至您的手机,请查收</span>
</li>
<li class="clearfix" data-index="3">
<input id="pwd" class="input va pwd" name="pwd" placeholder="设置密码" autocomplete="off" maxlength="20" type="password">
<div class="pwd-intensity-container">
<span class="pwd-intensity low">低</span>
<span class="pwd-intensity mid">中</span>
<span class="pwd-intensity high">高</span>
</div>
<div id="pwd-tips" class="hide pwd-tips">
<div class="default" id="pwd-tip1"><i></i>密码只支持6-20位字符</div>
<div class="default" id="pwd-tip2"><i></i>建议由字母、 数字、 符号两种以上组合</div>
</div>
</li>
<li class="items-container clearfix">
<input id="agree-terms" class="agree-terms" type="checkbox" checked="">
<span>
我已阅读并同意遵守
<a class="link go-yoho-items" href="{{itemUrl}}">YOHO!有货服务条款</a>
</span>
</li>
<li class="clearfix">
<input name="refer" id="refer" type="hidden" value="{{referUrl}}">
<input id="register-btn" class="btn register-btn disable" type="submit" value="立即注册" disabled="">
</li>
<li class="quick-login-container">
我已注册YOHO!有货账号
<a class="link go-login" href="{{loginUrl}}">快速登录</a>
</li>
</ul>
<div id="err-tip" class="err-tip hide">
<span></span>
<b></b>
</div>
</form>
</div>
</div>
{{/ passport}}
</div>
{{> layout/footer}}
\ No newline at end of file
... ...
{{> layout/header}}
<div class="hotrank-page home-page yoho-page">
{{# hotrank}}
{{! 头部banner}}
{{# slide}}
{{> index/slide-banner}}
{{/ slide}}
{{! 人气单品}}
{{# popular}}
{{> index/floor-header}}
<div class="popular-goods">
<div class="popular-list clearfix">
{{# list}}
<li class="popular-item{{@index}}">
<div class="item-img">
<a target="_blank" href="{{href}}"><img class="lazy" data-original="{{img}}"></a>
<i class="polular-icon">{{rank}}</i>
</div>
<div class="item-content">
<h2>{{title}}</h2>
<p>¥{{# price}}<span>{{.}}</span>{{/ price}{{sPrice}}</p>
</div>
</li>
{{/ list}}
</div>
</div>
{{/ popular}}
{{! 热门品牌}}
{{# hotBrands}}
{{> index/floor-header}}
<div class="hot-brands logo-brand clearfix"></div>
{{/ hotBrands}}
{{! 一周热卖}}
{{# hotWeek}}
{{> index/floor-header}}
<div class="hot-week">
<div class="hot-cate">
<ul class="clearfix">
{{# nav}}
<li data-sid="{{sid}}">
<a href="javascript:;">{{textCn}}</a>
</li>
{{/ nav}}
</ul>
</div>
<div class="hot-week-list clearfix">
{{# list}}
<!-- <li>
<div class="item-img">
<a target="_blank" href="{{url}}"><img class="lazy" data-original="{{img}}"></a>
<i class="polular-icon">{{rank}}</i>
</div>
<div class="item-content">
<h2>{{title}}</h2>
<p>{{# price}}<span>{{.}}</span>{{/ price}}{{sPrice}}</p>
</div>
</li> -->
{{> product/good}}
{{/ list}}
</div>
<div class="floatlayer">
<ul>
{{# nav}}
<li data-sid="{{sid}}">
<a href="javascript:;"><span>{{textCn}}</span></a>
</li>
{{/ nav}}
</ul>
</div>
</div>
{{/ hotWeek}}
{{/ hotrank}}
</div>
{{> layout/footer}}
\ No newline at end of file
... ...
{{> layout/header}}
<div class="product-list-page yoho-page">
<div class="product-list-page product-page yoho-page">
{{# list}}
{{# brandBanner}}
<div class="brand-banner">
... ... @@ -31,73 +31,7 @@
</div>
{{^}}
<div class="list-left pull-left">
{{# allDiscount}}
<div class="sort-container">
<ul class="sort-child-list new-sale">
<li><a href="{{href}}">全部折扣</a><span>{{updateNum}}</span></li>
{{#each list}}
<li><a href="{{href}}">{{name}}</a><span>{{num}}</span></li>
{{/each}}
</ul>
</div>
{{/ allDiscount}}
{{# newSales}}
<div class="sort-container">
<h2>一周新品上架<span>{{updateNum}}</span></h2>
<ul class="sort-child-list new-sale">
{{#each list}}
<li><a href="{{href}}">{{name}}</a><span>{{num}}</span></li>
{{/each}}
</ul>
</div>
{{/ newSales}}
{{# allSort}}
<div class="sort-container">
<h2>全部品类<span>{{updateNum}}</span></h2>
<ul>
{{#each list}}
<li class="product-list-nav">
<h3>
<span class="icon-triangle"></span>
{{name}}<span>{{num}}</span>
</h3>
<ul class="sort-child-list">
{{#each childList}}
<li>
<a href="{{href}}">{{name}}</a>
<span>{{num}}</span>
</li>
{{/each}}
</ul>
</li>
{{/each}}
</ul>
</div>
{{/ allSort}}
{{# advNav}}
{{# advNavTitle}}
<h2 class="nav-pic-title">{{.}}</h2>
{{/advNavTitle}}
<ul class="pic-nav">
{{#each list}}
<li><a href="{{href}}"><img src="{{src}}" alt=""/></a></li>
{{/each}}
</ul>
{{/advNav}}
{{#advPic}}
{{# advPicTitle}}
<h2 class="nav-pic-title">{{.}}</h2>
{{/ advPicTitle}}
<ul class="pic-nav">
{{#each list}}
<li><a href="{{href}}"><img src="{{src}}" alt=""/></a></li>
{{/each}}
</ul>
{{/advPic}}
{{> product/left-content}}
</div>
<div class="list-right pull-right">
{{# shopEntry}}
... ... @@ -126,23 +60,20 @@
</div>
{{/ shopEntry}}
{{# filters}}
{{> product/filter-box}}
{{/ filters}}
{{# sortIntro}}
<div class="sort-intro clearfix">
<div class="texts pull-left">
<p class="name">{{name}}</p>
<p class="en-name">{{enName}}</p>
<p class="desc">{{description}}</p>
</div>
<img class="pull-right img" src="{{img}}">
</div>
{{/ sortIntro}}
{{# opts}}
{{> product/sort-pager}}
{{/ opts}}
{{> product/standard-content}}
<div class="goods-container clearfix">
{{#each goods}}
{{> product/good}}
{{/each}}
<div class="good-item-wrapper">
<div class="good-info-main"></div>
<div class="good-select-color"></div>
</div>
</div>
{{> product/latest-walk}}
</div>
{{/ brandAbout}}
</div>
... ...
{{> layout/header}}
<div class="new-sale-page product-page yoho-page">
{{# newSale}}
{{# saleBanner}}
<div class="banner-img" style="height: {{bannerHeight}}px;background:url({{img}}) no-repeat top center;"></div>
{{/ saleBanner}}
<div class="center-content clearfix">
{{> layout/path-nav}}
{{# saleTitle}}
<div class="header-title">
{{name}}
<p class="line-through"></p>
<p class="count-wrap">
<span class="count">共{{count}}个结果</span>
</p>
</div>
{{/ saleTitle}}
<div class="list-left pull-left">
{{> product/left-content}}
</div>
<div class="list-right pull-right">
{{# newMain}}
<div class="new-banner">
<a href="{{bannerHref}}">
<img src="{{banner}}">
</a>
</div>
<div class="new-brands clearfix">
<span class="iconfont pre">&#xe607;</span>
<div class="brands-wrap">
<ul class="brands">
{{# brands}}
<li>
<a href="{{href}}">
<img src="{{logo}}">
</a>
</li>
{{/ brands}}
</ul>
</div>
<span class="iconfont next">&#xe608;</span>
</div>
<div class="new-floor-title">
<span class="date">{{date}}</span>
<span class="title">{{title}}</span>
</div>
{{/ newMain}}
{{> product/standard-content}}
</div>
</div>
{{/ newSale}}
</div>
{{> layout/footer}}
\ No newline at end of file
... ...
{{> layout/header}}
<div class="product-search-page yoho-page center-content">
<div class="product-search-page product-page yoho-page center-content">
{{# search}}
{{> layout/path-nav}}
{{# filters}}
{{> product/filter-box}}
{{/ filters}}
{{> product/standard-content}}
{{# opts}}
{{> product/sort-pager}}
{{/ opts}}
<div class="goods-container clearfix">
{{#each goods}}
{{> product/good}}
{{/each}}
<div class="good-item-wrapper">
<div class="good-info-main"></div>
<div class="good-select-color"></div>
</div>
</div>
{{> product/latest-walk}}
{{/ search}}
</div>
{{> layout/footer}}
\ No newline at end of file
... ...
{{> layout/header}}
<div class="product-detail-page yoho-page">
{{# detail}}
{{# banner}}
<div class="brand-banner" style="background:{{bgColor}}{{#if bgImg}} url({{bgImg}}){{/if}}">
<div class="center-content clearfix">
<a class="pull-left" href="{{homeUrl}}">
<img src="{{logo}}" alt="{{alt}}">
</a>
<div class="opt pull-right">
<a class="home" href="{{homeUrl}}">
<span class="iconfont">&#xe617;</span>
</a>
<span id="brand-favour" class="brand-fav">
<i class="iconfont{{#if coled}} coled{{/if}}">&#xe616;</i>
</span>
</div>
</div>
</div>
{{/ banner}}
<div class="center-content">
{{> layout/path-nav}}
{{# goodInfo}}
<div class="main clearfix" data-skn="{{skn}}">
<div class="pull-left imgs clearfix">
<div class="pull-left img">
<div class="tags clearfix">
{{# tags}}
{{# isNew}}
<span class="good-tag new-tag">NEW</span>
{{/ isNew}}
{{# isReNew}}
<span class="good-tag renew-tag">再到着</span>
{{/ isReNew}}
{{# isSale}}
<span class="good-tag sale-tag">SALE</span>
{{/ isSale}}
{{# isNewFestival}}
<span class="good-tag new-festival-tag">新品节</span>
{{/ isNewFestival}}
{{# isLimit}}
<span class="good-tag limit-tag">限量商品</span>
{{/ isLimit}}
{{# isYearEndPromotion}}
<span class="good-tag yep-tag">年终大促</span>
{{/ isYearEndPromotion}}
{{# isYearMidPromotion}}
<span class="good-tag ymp-tag">年中热促</span>
{{/ isYearMidPromotion}}
{{# isFew}}
<p class="good-tag few-tag">即将售罄</p>
{{/ isFew}}
{{/ tags}}
</div>
<img id="img-show" class="img-show" src="{{img}}">
</div>
<div id="thumbs" class="pull-right thumbs">
{{# colors}}
<div class="thumb-wrap{{#unless focus}} hide{{/unless}}">
{{#if focus}}
{{# thumbs}}
<a href="{{url}}">
<img class="thumb" src="{{img}}" data-shower="{{shower}}">
</a>
{{/ thumbs}}
{{^}}
{{# thumbs}}
<a href="{{url}}">
<img class="thumb lazy" data-original="{{img}}" data-shower="{{shower}}">
</a>
{{/ thumbs}}
{{/if}}
</div>
{{/ colors}}
</div>
</div>
<div class="pull-right infos">
<p class="name">
{{name}}
</p>
<a class="brand-name" href="{{brandUrl}}">{{brandName}}</a>
<p class="market-price {{#if salePrice}}with-sale{{/unless}}">
<span class="title">市场价:</span>
<span class="price">¥{{marketPrice}}</span>
</p>
{{#if salePrice}}
<p class="sale-price">
<span class="title">促销价:</span>
<span class="price">¥{{salePrice}}</span>
</p>
{{/if}}
{{#if activity}}
<ul class="activity">
{{#each activity}}
<li>
{{#if sizeImg}}
<a class="img-link" href="{{url}}">
<img src="{{sizeImg}}">
</a>
{{^}}
<span class="ac-type">{{type}}</span>
<span class="ac-des">【{{des}}】</span>
{{/if}}
</li>
{{/each}}
</ul>
{{/if}}
<div class="trade-content">
<div id="type-chose" class="type-chose">
<div class="chose-color row clearfix">
<span class="title pull-left">选颜色:</span>
<ul class="colors pull-left clearfix">
{{#each colors}}
<li class="{{#if focus}}focus{{/if}} {{#if disable}}disable{{/if}} pull-left" title="{{title}}">
<img src="{{src}}">
</li>
{{/each}}
</ul>
</div>
<div class="chose-size row clearfix">
<span class="title pull-left">选尺码:</span>
<div id="sizes" class="size-wrapper pull-left clearfix">
{{#each colors}}
<ul class="size {{#unless focus}}hide{{/unless}} clearfix">
{{#each size}}
<li {{#unless num}}class="disable"{{/unless}} data-title="{{title}}" data-sku="{{sku}}" data-num="{{num}}">{{name}}</li>
{{/each}}
</ul>
{{/each}}
<span class="size-ruler"></span>
<span class="size-warn warn-tip hide">
<i class="iconfont">&#xe62c;</i>
请选择尺码
</span>
<p class="color-size-tip hide"></p>
</div>
</div>
<div class="chose-count row clearfix">
<span class="title pull-left">选数量:</span>
<div class="num-wraper pull-left clearfix">
<span id="num" class="num pull-left">1</span>
<span class="minus-plus pull-left">
<i id="plus-num" class="plus iconfont">&#xe610;</i>
<i id="minus-num" class="minus iconfont">&#xe600;</i>
</span>
<span id="num-warn" class="num-warn warn-tip hide">
<i class="iconfont">&#xe62c;</i>
库存不足
</span>
</div>
</div>
<p class="row">
<span id="add-to-cart" class="add-to-cart">
<i class="iconfont">&#xe628;</i>
添加到购物车
</span>
<span id="sold-out" class="sold-out hide">
<i class="iconfont">&#xe62d;</i>
已售罄
</span>
<span id="collect-product" class="{{#if coled}}coled {{/if}}collect-product">
<i class="iconfont">&#xe616;</i>
{{#if coled}}
<em>已收藏</em>
{{^}}
<em>收藏商品</em>
{{/if}}
</span>
</p>
<p class="share-row">
<span class="title pull-left">分享商品:</span>
<span class="share-wrapper pull-left clearfix">
<i class="weibo" data-type="weibo" title="分享到新浪微博"></i>
<i class="weixin" data-type="weixin" title="分享到微信朋友圈"></i>
<i class="qweibo" data-type="qweibo" title="分享到腾讯微博"></i>
<i class="qzone" data-type="qzone" title="分享到QQ空间"></i>
<i class="qq" data-type="qq" title="分享到QQ好友"></i>
<i class="renren" data-type="renren" title="分享到人人"></i>
<i class="douban" data-type="douban" class="分享到豆瓣"></i>
</span>
</p>
</div>
<div id="balance" class="balance">
<p class="success-tip">商品已成功添加到购物车!</p>
<p class="cart-total">购物车一共有<span id="cart-num">0</span>件商品</p>
<p class="balance-btns">
<a class="go-cart" href="{{goCartUrl}}">
去购物车结算
<i class="iconfont">&#xe601;</i>
</a>
<span id="keep-shopping" class="keep-shopping">
继续购物
</span>
</p>
</div>
</div>
</div>
</div>
{{/ goodInfo}}
<div class="other-infos">
<div class="description-material info-block">
<p class="block-title">
<span class="title cur">商品信息 DESCRIPTION</span>
<span class="sep">|</span>
<span class="title">材质洗涤 MATERIALS</span>
</p>
<div class="description-content">
{{# description}}
<ul class="basic clearfix">
{{# basic}}
<li>
{{key}}: {{value}}
</li>
{{/ basic}}
</ul>
{{#if comfort}}
<ul class="comfort clearfix">
{{# comfort}}
<li class="pull-left">
<span class="comfort-title">{{name}}:</span>
<span class="min-des">{{minDes}}</span>
{{# blocks}}
<span class="comfort-block {{#if cur}}cur{{/if}}"></span>
{{/ blocks}}
<span class="max-des">{{maxDes}}</span>
</li>
{{/ comfort}}
</ul>
{{/if}}
{{/ description}}
</div>
<div class="material-content">
{{# material}}
{{#if detail}}
<ul class="material-detail clearfix">
{{# detail}}
<li>
<img src="{{img}}">
<p class="name">{{name}}<br>{{enName}}</p>
<p class="text">{{text}}</p>
</li>
{{/ detail}}
</ul>
{{/if}}
{{#if wash}}
<ul class="wash">
{{# wash}}
<li>
<img class="wash-icon" src="{{img}}">
<p class="wash-name">{{name}}</p>
</li>
{{/ wash}}
</ul>
{{/if}}
{{/ material}}
</div>
</div>
<div class="size-info info-block">
<p class="block-title">
<span class="title cur">尺码信息 SIZE INFO</span>
</p>
{{# size}}
<table class="size-table">
<thead>
<tr>
{{# thead}}
<th width="{{width}}">{{name}}</th>
{{/ thead}}
</tr>
</thead>
<tbody>
{{# tbody}}
<tr>
{{#each .}}
<td>{{.}}</td>
{{/each}}
</tr>
{{/ tbody}}
</tbody>
</table>
<p class="size-tip">
以上尺寸为实物人工测量,因测量方式不同会有1-2CM误差,相关数据仅作参考,以收到实物为准。 单位:CM
</p>
<p class="size-tip">
参考尺码因衣服版型、剪裁不同会有误差,仅供参考
</p>
{{#if sizeImg}}
<img class="size-img" src="{{sizeImg}}">
{{/if}}
{{/ size}}
</div>
{{#if reference}}
<div class="reference info-block">
<p class="block-title">
<span class="title cur">模特试穿 REFERENCE</span>
</p>
{{# reference}}
<table class="reference-table">
<thead>
<tr>
{{# thead}}
<th width="{{width}}">{{name}}</th>
{{/ thead}}
</tr>
</thead>
<tbody>
{{# tbody}}
<tr>
{{#each .}}
<td>
{{#if @first}}
<img class="avatar" src="{{.}}">
{{^}}
{{.}}
{{/if}}
</td>
{{/each}}
</tr>
{{/ tbody}}
</tbody>
</table>
{{/ reference}}
<p class="size-tip">
模特试穿中身高单位:CM,体重单位:KG,三围单位:CM
</p>
</div>
{{/if}}
<div class="details info-block">
<p class="block-title">
<span class="title cur">商品详情 DETAILS</span>
</p>
<div class="details-html">
{{{details}}}
</div>
</div>
{{# consultComment}}
<div class="consult-comment info-block">
<p class="block-title">
<span class="title">顾客咨询({{consultNum}})</span>
<span class="sep">|</span>
<span class="title cur">购买评价({{commentNum}})</span>
</p>
<div class="comments cc-content">
<h2>购买评价({{commentNum}})</h2>
<ul id="comments-ul">
{{# comments}}
<li>
<div class="user-info clearfix">
<img class="user-avatar pull-left" src="{{avatar}}">
<p>
<span class="name">{{userName}} </span>
购买了{{color}}/{{size}}
<br>
<span class="date">{{date}}</span>
</p>
</div>
<p class="comment">{{comment}}</p>
</li>
{{/ comments}}
</ul>
{{#if hasMoreComments}}
<p class="more-wrap">
<span class="load-more-comments load-more">
加载更多
<i class="iconfont">&#xe61d;</i>
</span>
</p>
{{/if}}
<p class="btn-wrap">
<a class="btn" href="{{commentUrl}}" target="_blank">
<i class="iconfont">&#xe62a;</i>
我要评论
</a>
</p>
</div>
<div class="consults cc-content">
<h2>顾客咨询({{consultNum}})</h2>
<ul id="consults-ul">
{{# consults}}
<li>
<div class="user-info clearfix">
<img class="user-avatar" src="{{avatar}}">
<p>
<span class="question">{{question}}</span>
<br>
<span class="date">{{date}}</span>
</p>
</div>
<p class="consult">{{answer}}</p>
</li>
{{/ consults}}
</ul>
{{#if hasMoreConsults}}
<p class="more-wrap">
<span class="load-more-consults load-more">
加载更多
<i class="iconfont">&#xe61d;</i>
</span>
</p>
{{/if}}
<p class="btn-wrap">
<span id="consults-btn" class="btn">
<i class="iconfont">&#xe62a;</i>
我要咨询
</span>
</p>
<div class="new-consult hide">
<textarea class="my-consult"></textarea>
<span class="consult-warn warn-tip hide">
<i class="iconfont">&#xe62c;</i>
请输入咨询内容
</span>
<div class="captcha-row">
<input class="captcha" type="text">
<img class="captcha-img" src="http://www.yohobuy.com/passport/images?g=consult">
<span class="captcha-warn warn-tip hide">
<i class="iconfont">&#xe62c;</i>
<em>请输入验证码</em>
</span>
</div>
<span id="submit-consult" class="btn submit-consult">提交咨询</span>
</div>
<div class="consult-success hide">
<p>
<span class="iconfont">&#xe61a;</span>
咨询成功,请等待客服回复
</p>
</div>
</div>
</div>
{{/ consultComment}}
<div class="after-service">
<p id="after-service-switch" class="after-service-switch">
<span class="iconfont">&#xe62b;</span>
售后服务
<span class="iconfont triangle">&#xe604;</span>
</p>
<div class="after-service-content info-block">
<div class="block-title">
<span class="title cur">售后服务 AFTER SERVICE</span>
</div>
<div class="img-1"></div>
<div class="img-2"></div>
<div class="text">
<h4>退换货承诺</h4>
<p>自您签收商品7日内可以退货,15日内可以换货,在商品不影响二次销售的情况下,YOHO!有货将为您办理退换货服务,请在网站提交"退换货"申请。需要说明的是:非质量问题的退换货,来回运费由您承担。</p>
<h4>退换货方式</h4>
<p>
针对国内大中型城市,YOHO!有货开通了<span class="orange">"上门换货"</span>服务,上门服务区域及费用请联系客服中心;若您所在的区域不在上门换货范围内,请您选择普通快递将商品、内包装、赠品及发货单等一并寄回。质量问题的退换货,目前不支持运费到付款业务,请您先垫付运费寄回。如需退换货,请致电客服电话:400-889-9646
</p>
<h4>退换货邮寄地址</h4>
<p>
南京市江宁区江宁经济技术开发区苏源大道87号YOHO!有货物流中心东一楼 收件人:YOHO!有货 邮编:211106
<br>
YOHO!有货客服热线:400-889-9646  客服邮箱:<a href="mailto:service@yoho.cn">service@yoho.cn</a>
<br>
有疑问请联系我们,我们将为您提供最优质的产品和服务。
</p>
</div>
</div>
</div>
<div class="service"></div>
<div class="info-block">
<p class="block-title">
<span class="title cur">最近浏览 RECENT REVIEW</span>
</p>
<ul class="recent-view clearfix">
{{# recentView}}
<li>
<a href="{{url}}">
<img src="{{img}}">
</a>
<a class="name" href="{{url}}">{{name}}</a>
<p class="price">
<span class="market-price {{#if salePrice}}has-sale{{/if}}">¥{{marketPrice}}</span>
{{#if salePrice}}
<span class="sale-price">¥{{salePrice}}</span>
{{/if}}
</p>
</li>
{{/ recentView}}
</ul>
</div>
</div>
</div>
{{/ detail}}
</div>
{{> layout/footer}}
\ No newline at end of file
... ...
<div class="msg-content clearfix" data-id="{{id}}">
<div class="msg-img">
<div class="classification">
{{classification}}
</div>
{{#if isReco}}
<div class="reco"></div>
{{/if}}
<a href="{{url}}">
<img class="lazy{{#if isSquareImg}} square{{/if}}" data-original="{{img}}">
</a>
</div>
<div class="msg-info">
<a class="msg-title" href="{{url}}">{{title}}</a>
<p class="msg-app">
<a href="{{editorUrl}}">
<span class="author">{{author}}</span>
</a>
<span class="publish-time">
<i class="iconfont">&#xe625;</i>
{{pTime}}
</span>
<span class="page-view">
<i class="iconfont">&#xe627;</i>
{{pView}}
</span>
</p>
<p class="content">{{content}}</p>
<div class="footer">
<div class="tags">
{{# tags}}
<a class="msg-tag" href="{{url}}" target="_blank">{{tag}}</a>
{{/ tags}}
</div>
<div class="like-comment">
<span class="like">
<i class="iconfont like-icon{{#if liked}} liked{{/if}}">&#xe626;</i>
{{#if like}}<b class="like-num">(<em class="num">{{like}}</em>)</b>{{/if}}
</span>
<span class="comment">
<i class="iconfont">&#xe623;</i>
{{# comment}}
({{.}})
{{/ comment}}
</span>
</div>
</div>
</div>
</div>
\ No newline at end of file
... ...
<div class="ex-reco">
<h1 class="ex-reco-title">精彩推荐</h1>
<div id="ex-reco-list" class="ex-reco-list">
{{# exRecos}}
<div class="ex-reco-item clearfix">
<a class="ex-reco-img" href="{{url}}" target="_blank">
<span class="bg-img" style="background-image:url({{img}})"></span>
</a>
<a href="{{url}}" target="_blank">
<p class="ex-reco-context">{{title}}</p>
</a>
</div>
{{/ exRecos}}
</div>
</div>
<div class="hot">
<h1 class="hot-title">热门标签</h1>
<div class="hot-tag-list">
{{#hotTags}}
<a class="hot-tag" href="{{url}}">
{{tagName}}
</a>
{{/hotTags}}
</div>
</div>
<div class="ads">
{{# ads}}
<a class="ad" href="{{url}}">
<img class="lazy" data-original="{{img}}">
</a>
{{/ ads}}
</div>
\ No newline at end of file
... ...
... ... @@ -94,7 +94,7 @@
<ul class="category-list">
{{#branditems}}
<li class="category-item thirdnavbar">
<a href="" hot={{hot}}>{{brandname}}</a>
<a href="{{link}}" hot={{hot}}>{{brandname}}</a>
</li>
{{/branditems}}
</ul>
... ...
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
<meta name="renderer" content="webkit">
<link rel="shortcut icon" href="http://www.yohobuy.com/favicon.ico" type="image/x-icon" />
<meta name="keywords" content="{{keywords}}">
<meta name="description" content="{{description}}">
<title>{{title}}</title>
<!-- [if (gte IE 6)&(lte IE 8)>
<script src="http://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<link rel="stylesheet" href="http://webstatic.dev.yohobuy.com/css/index.css">
</head>
<body>
{{# simpleHeader}}
<div class="simple-header">
<div class="header-inner clearfix">
{{# logo}}
<h1 class="logo">
<a href="{{url}}">
<img src="{{img}}" alt="">
</a>
</h1>
{{/ logo}}
<ul class="header-tool clearfix">
{{# tool}}
<li {{#if options}}class="tool-options"{{/if}}{{#if loginUrl}}class="login-box"{{/if}}>
{{# tell}}
<i class="tell-icon iconfont">&#xe61c;</i>
{{/ tell}}
{{#if url}}
<a href="{{url}}">{{title}}</a>
{{/if}}
{{#unless url}}
<span>{{title}}</span>
{{/unless}}
{{#if options}}
<i class="options-icon down iconfont">&#xe604;</i>
<i class="options-icon up iconfont">&#xe603;</i>
<div class="tool-select">
{{# options}}
<a href="{{url}}">{{textCn}}</a>
{{/ options}}
</div>
{{/if}}
{{# loginInfo}}
<a href="{{url}}">{{textCn}}</a>
{{/ loginInfo}}
</li>
{{/ tool}}
</ul>
</div>
</div>
{{/ simpleHeader}}
\ No newline at end of file
... ...
... ... @@ -19,9 +19,79 @@
{{!-- 列表 --}}
{{#if productListPage}}
<script>
seajs.use(['js/product/list', 'js/product/product'], function (list, product) {
product.init(4);
});
</script>
<script>
seajs.use(['js/product/list', 'js/product/product'], function (list, product) {
product.init(4);
});
</script>
{{/if}}
{{!-- 商品详情页 --}}
{{#if productDetailPage}}
<script>
seajs.use('js/product/item');
</script>
{{/if}}
{{!-- 逛 --}}
{{#if guangIndexPage}}
<script>
seajs.use('js/guang/index');
</script>
{{/if}}
{{!-- 逛详情页 --}}
{{#if guangDetailPage}}
<script>
seajs.use('js/guang/detail');
</script>
{{/if}}
{{!-- 逛列表页 --}}
{{#if guangListPage}}
<script>
seajs.use('js/guang/list');
</script>
{{/if}}
{{!-- 登录注册找回密码--}}
{{#if loginPage}}
<script>
seajs.use('js/passport/login');
</script>
{{/if}}
{{!-- 注册页--}}
{{#if registerPage}}
<script>
seajs.use('js/passport/reg');
</script>
{{/if}}
{{!-- 找回密码--}}
{{#if backPage}}
<script>
seajs.use('js/passport/back');
</script>
{{/if}}
{{!-- 重置密码--}}
{{#if resetPage}}
<script>
seajs.use('js/passport/reset');
</script>
{{/if}}
{{!-- 验证手机 --}}
{{#if vertificationPage}}
<script>
seajs.use('js/passport/vertification');
</script>
{{/if}}
{{!-- 热销排行--}}
{{#if hotrankPage}}
<script>
seajs.use('js/product/hotrank');
</script>
{{/if}}
\ No newline at end of file
... ...
<div class="passport-cover">
<div class="cover-content">
{{#if coverHref}}
<a href="{{coverHref}}" target="_bank">
<img class="cover-img" src="{{coverImg}}">
</a>
{{^}}
<img class="cover-img" src="{{coverImg}}">
{{/if}}
</div>
</div>
\ No newline at end of file
... ...
... ... @@ -26,7 +26,7 @@
</div>
<div class="good-detail-img">
<a class="good-thumb" href="{{url}}">
<img class="lazy" src="{{thumb}}">
<img class="lazy" data-original="{{thumb}}">
</a>
{{# isFew}}
<p class="few-tag">即将售罄</p>
... ...
{{#if latestWalk}}
<div class="latest-walk">
<h2>最近浏览的商品</h2>
<div class="goods clearfix">
{{# latestWalk}}
<div class="good">
<a href="{{href}}">
<img class="lazy" data-original="{{img}}">
</a>
<a class="name" href="{{href}}">{{name}}</a>
<p class="price">
{{#if salePrice}}
<span class="market-price">¥{{marketPrice}}</span>
{{/if}}
<span class="sale-price">¥{{salePrice}}</span>
</p>
</div>
{{/ latestWalk}}
</div>
</div>
{{/if}}
\ No newline at end of file
... ...
{{# leftContent}}
{{!-- 全部折扣 --}}
{{# allDiscount}}
<div class="sort-container">
<ul class="sort-child-list new-sale">
<li>
<a href="{{href}}">全部折扣</a>
<span>{{updateNum}}</span>
</li>
{{#each list}}
<li>
<a href="{{href}}">{{name}}</a>
<span>{{num}}</span>
</li>
{{/each}}
</ul>
</div>
{{/ allDiscount}}
{{!-- 新品上架 --}}
{{# newSales}}
<div class="sort-container">
<h2>
一周新品上架
<span>{{updateNum}}</span>
</h2>
<ul class="sort-child-list new-sale">
{{#each list}}
<li>
<a href="{{href}}">{{name}}</a>
<span>{{num}}</span>
</li>
{{/each}}
</ul>
</div>
{{/ newSales}}
{{!-- 全部品类--}}
{{# allSort}}
<div class="sort-container">
<h2>
全部品类
<span>{{updateNum}}</span>
</h2>
<ul>
{{#each list}}
<li class="product-list-nav">
<h3>
<span class="icon-triangle"></span>
{{name}}
<span>{{num}}</span>
</h3>
<ul class="sort-child-list">
{{#each childList}}
<li>
<a href="{{href}}">{{name}}</a>
<span>{{num}}</span>
</li>
{{/each}}
</ul>
</li>
{{/each}}
</ul>
</div>
{{/ allSort}}
{{!-- 图片链接 --}}
{{# picLink}}
{{#if title}}
<h2 class="nav-pic-title">{{title}}</h2>
{{/if}}
<ul class="pic-nav">
{{#each list}}
<li>
<a href="{{href}}">
<img src="{{src}}">
</a>
</li>
{{/each}}
</ul>
{{/ picLink}}
{{/ leftContent}}
\ No newline at end of file
... ...
<div class="no-result">
<p class="no-title">
抱歉!没有找到{{# keyWord}}与"<b class="keyword">{{.}}</b>"{{/ keyWord}}相关的商品
</p>
<div class="search-again clearfix">
<form method="GET" action="{{searchActionUrl}}">
<input id="no-result-input" name="query" type="text" placeholder="换个关键词试试">
<span id="search-again-btn">
<i class="iconfont">&#xe611;</i>
</span>
</form>
</div>
<p class="no-tip">建议您:看看输入的文字是否有误 / 减少分类条件限制 / 重新搜索</p>
</div>
\ No newline at end of file
... ...
<div class="sort-pager">
{{# sortType}}
<a class="sort-type{{#if active}} active{{/if}}" href="{{href}}">
{{name}}
{{#if hasSortOrient}}
{{#if active}}
{{#if desc}}
<span class="active-icon iconfont">&#xe603;</span>
{{!-- 搜索页、列表页、NEW/SALE页标准内容--}}
{{# filters}}
{{> product/filter-box}}
{{/ filters}}
{{# opts}}
<div class="sort-pager">
{{# sortType}}
<a class="sort-type{{#if active}} active{{/if}}" href="{{href}}">
{{name}}
{{#if hasSortOrient}}
{{#if active}}
{{#if desc}}
<span class="active-icon iconfont">&#xe603;</span>
{{^}}
<span class="active-icon iconfont">&#xe604;</span>
{{/if}}
{{^}}
<span class="active-icon iconfont">&#xe604;</span>
<span class="iconfont">&#xe614;</span>
{{/if}}
{{^}}
<span class="iconfont">&#xe614;</span>
<span class="iconfont">&#xe604;</span>
{{/if}}
{{^}}
<span class="iconfont">&#xe604;</span>
{{/if}}
</a>
{{/ sortType}}
</a>
{{/ sortType}}
{{# checks}}
<a class="checks{{#if checked}} checked{{/if}}" href="{{href}}">
{{#if checked}}
<span class="iconfont">&#xe612;</span>
{{^}}
<span class="iconfont">&#xe613;</span>
{{/if}}
{{name}}
</a>
{{/ checks}}
{{# checks}}
<a class="checks{{#if checked}} checked{{/if}}" href="{{href}}">
{{#if checked}}
<span class="iconfont">&#xe612;</span>
{{^}}
<span class="iconfont">&#xe613;</span>
{{/if}}
{{name}}
</a>
{{/ checks}}
<div class="pager-wrap">
<div class="page-count">
<span id="count-per-page">
{{countPerPage}}
<i class="iconfont">&#xe604;</i>
</span>
每页
<ul>
{{# pageCounts}}
<li>
<a href="{{href}}">{{count}}</a>
</li>
{{/ pageCounts}}
</ul>
</div>
{{#if ../goods}}
<div class="pager-wrap">
<div class="page-count">
<span id="count-per-page">
{{countPerPage}}
<i class="iconfont">&#xe604;</i>
</span>
每页
<ul>
{{# pageCounts}}
<li>
<a href="{{href}}">{{count}}</a>
</li>
{{/ pageCounts}}
</ul>
</div>
<p class="pager">
{{#if preHref}}
<a href="{{preHref}}">
<span class="iconfont">&#xe615;</span>
</a>
{{^}}
<span class="dis-icon iconfont">&#xe615;</span>
{{/if}}
<span>
<i>{{curPage}}</i>/{{pageCount}}
</span>
<p class="pager">
{{#if preHref}}
<a href="{{preHref}}">
<span class="iconfont">&#xe615;</span>
</a>
{{^}}
<span class="dis-icon iconfont">&#xe615;</span>
{{/if}}
{{#if nextHref}}
<a href="{{nextHref}}">
<span class="iconfont">&#xe601;</span>
</a>
{{^}}
<span class="dis-icon iconfont">&#xe601;</span>
{{/if}}
</p>
</div>
{{/if}}
</div>
{{/ opts}}
{{#if goods}}
<div class="goods-container clearfix">
{{#each goods}}
{{> product/good}}
{{/each}}
{{# hasNextPage}}
<div class="block-next-page">
<a href="{{href}}">
<img src="{{src}}" alt=""/>
</a>
</div>
{{/ hasNextPage}}
<div class="good-item-wrapper">
<div class="good-info-main"></div>
<div class="good-select-color"></div>
</div>
</div>
<span>
<i>{{curPage}}</i>/{{pageCount}}
</span>
<div class="product-pager clearfix">
<span class="total">{{opts.curPage}} - {{opts.pageCount}} / {{totalCount}}件商品</span>
{{#if nextHref}}
<a href="{{nextHref}}">
<span class="iconfont">&#xe601;</span>
</a>
{{^}}
<span class="dis-icon iconfont">&#xe601;</span>
{{/if}}
</p>
<div class="pager">
{{{pager}}}
</div>
</div>
</div>
\ No newline at end of file
{{^}}
{{> product/no-result}}
{{/if}}
\ No newline at end of file
... ...
... ... @@ -2,7 +2,7 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
Created by FontForge 20120731 at Thu Dec 10 11:10:57 2015
Created by FontForge 20120731 at Wed Dec 23 15:19:53 2015
By Ads
</metadata>
<defs>
... ... @@ -19,7 +19,7 @@ Created by FontForge 20120731 at Thu Dec 10 11:10:57 2015
bbox="0 -214 1172.1 864"
underline-thickness="50"
underline-position="-100"
unicode-range="U+0078-E61B"
unicode-range="U+0078-E62E"
/>
<missing-glyph horiz-adv-x="374"
d="M34 0v682h272v-682h-272zM68 34h204v614h-204v-614z" />
... ... @@ -97,5 +97,67 @@ d="M903 493l-68 69l-388 -388l-231 230l-68 -68l299 -298l65 65z" />
<glyph glyph-name="uniE61B" unicode="&#xe61b;"
d="M505 253l2 -2q2 -1 4 -1l3 1l430 364q2 2 1 6l-2 2q-1 1 -3 1h-435h-424q-2 0 -3 -1l-2 -2l1 -6zM72 585q-3 2 -6 0l-3 -4v-584q0 -4 3.5 -5t5.5 1l288 346zM953 585h-5l-288 -246l287 -346q3 -2 6 -1t3 5v584q0 3 -3 4zM641 322l-131 -111l-5 5l-125 103l-275 -328
q-2 -3 -1 -6l2 -2q1 -1 3 -1h396h407q4 0 5 3t-1 6z" />
<glyph glyph-name="uniE61C" unicode="&#xe61c;"
d="M982 137l-4 6l-10 12q-12 13 -42 38q-12 10 -25.5 20.5t-27.5 21t-26 17.5l-48 31l-21 11q-5 2 -11.5 3t-13 0.5t-11.5 -2.5q-7 -2 -13.5 -7.5t-9.5 -10.5l-17 -25q-4 -6 -8 -13l-12 -24q-9 -18 -15 -28q-7 -14 -21 -24t-32 -13.5t-36 7.5q-102 57 -171 123
q-101 95 -135 172q-8 13 -1.5 37t26.5 34q12 6 25 11.5t23 9.5t18 9q7 4 14.5 8.5t18.5 11.5l2 1l4 4l2 1l3 3q19 18 9 43l-3 8q-1 4 -4 10t-12.5 24.5t-19.5 34.5q-8 14 -19.5 31t-21.5 31q-10 13 -20.5 24t-18.5 17.5t-14.5 11.5t-9.5 6l-4 2l-13 7q-9 4 -17.5 4.5t-16 -1
t-16.5 -4.5q-5 -2 -9.5 -4.5t-8.5 -4t-9 -4.5l-7 -4q-3 -2 -8 -6t-7 -5t-7.5 -5.5t-7 -5.5t-8 -6.5t-7.5 -5.5q-44 -37 -69.5 -82.5t-19.5 -86.5q10 -72 88 -198.5t182.5 -225.5t237.5 -173t209 -84q79 -10 169 73q16 15 31.5 34.5t24.5 38.5q6 14 7.5 30t-5.5 31v0z
M982 137z" />
<glyph glyph-name="uniE61D" unicode="&#xe61d;"
d="M888 620q8 8 18.5 10.5t20.5 0t18 -10.5q4 -4 6.5 -8.5t4 -9.5t1.5 -10.5t-1.5 -10t-4 -9.5t-6.5 -9l-406 -405q-12 -12 -28.5 -12t-27.5 12q-6 5 -9 12.5t-3 15.5t3 15t9 13zM539 214q3 -3 5 -6t3.5 -7t2 -7.5t0.5 -7.5t-0.5 -8t-2 -7.5t-3.5 -6.5t-5 -6
q-12 -12 -28.5 -12t-28.5 12l-406 405q-7 8 -10 18.5t0 20.5t10 18q6 6 13.5 9t15 3t15 -3t13.5 -9zM539 214z" />
<glyph glyph-name="uniE61E" unicode="&#xe61e;"
d="M127 769v-770h770v770h-770zM555 170h-86v86h86v-86zM555 298h-86v257h86v-257z" />
<glyph glyph-name="uniE61F" unicode="&#xe61f;"
d="M511.5 747q-72.5 0 -141 -22.5t-123.5 -64t-96 -96.5t-63.5 -123t-22.5 -141q0 -91 35 -173.5t95 -142.5t143 -95.5t173.5 -35.5t173.5 35.5t143 95.5t95 142.5t35 173.5q1 73 -22 141t-64 123t-96 96.5t-123.5 64t-141 22.5zM452 100h-1v0l-38 38l-179 180l38 37
l179 -179l318 318l38 -38zM512 -147q-91 0 -175 35q-80 34 -142 96t-96 142q-8 21 -15 42t-11 43t-6.5 44t-2.5 45q0 91 35 174q34 81 96 142.5t142 95.5q84 36 175 36q45 0 88.5 -9t85.5 -27q40 -16 75.5 -40.5t66.5 -54.5q20 -21 38 -44t32.5 -47.5t25.5 -51.5
q35 -83 35 -174t-35 -174q-34 -80 -96 -142t-142 -96q-14 -6 -28 -11t-28.5 -9t-29 -6.5t-29 -4.5t-29.5 -3t-30 -1zM511.5 747q-90.5 0 -173 -35.5t-142.5 -95.5t-95.5 -142.5t-35.5 -173.5t35.5 -173.5t95.5 -142.5t142.5 -95t173 -35t173.5 35t142.5 95t95 142.5
t35.5 173.5t-35.5 173.5t-95 142.5t-142.5 95.5t-173.5 35.5zM451 99l-38 39l-180 180l39 38l179 -180l318 318l39 -38zM414 138l37 -37l355 355l-37 37l-318 -318l-179 180l-38 -37z" />
<glyph glyph-name="uniE620" unicode="&#xe620;"
d="M958 662q0 30 -21 51.5t-51 21.5h-749q-30 0 -51 -21.5t-21 -51.5v-748q0 -30 21 -51t51 -21h749q30 0 51 21t21 51v748zM778 358l-267 -267q-14 -14 -34 -14q-9 0 -18 3.5t-16 10.5l-168 168q-14 14 -14 34t14 34q9 10 21.5 13t25 0t21.5 -13l134 -133l233 232
q9 10 21.5 13t25 0t21.5 -13q14 -14 14 -34t-14 -34z" />
<glyph glyph-name="uniE621" unicode="&#xe621;"
d="M384 556v-513l321 257z" />
<glyph glyph-name="uniE622" unicode="&#xe622;" horiz-adv-x="1000"
d="M662 566v-499l-299 250zM662 566z" />
<glyph glyph-name="uniE623" unicode="&#xe623;" horiz-adv-x="1000"
d="M744 502h-488q-25 0 -46 -12t-33 -33t-12 -46v-290q0 -38 26.5 -64.5t64.5 -26.5h227l200 -138v138h61q38 0 64.5 26.5t26.5 64.5v290q0 15 -4.5 29t-13 25t-19.5 19.5t-25 13t-29 4.5zM744 262z" />
<glyph glyph-name="uniE624" unicode="&#xe624;" horiz-adv-x="1025"
d="M1024 396v338q0 32 -23 55t-55 23h-331h-14q-55 0 -76 -21l-506 -506q-19 -19 -19 -46t19 -45l387 -387q18 -19 45 -19t46 19l506 506q10 10 15 25.5t5.5 26.5t0.5 31zM764 465q-36 0 -61.5 25.5t-25.5 61.5q0 17 7 33t18.5 28t27.5 18.5t34 6.5q36 0 61 -25t25 -61
t-25 -61.5t-61 -25.5z" />
<glyph glyph-name="uniE625" unicode="&#xe625;"
d="M511 748q-91 0 -173.5 -35.5t-142 -95t-95 -142t-35.5 -173.5q0 -61 16 -118.5t45 -106.5t70 -90t90 -70t106.5 -45t118.5 -16q91 0 173.5 35.5t142.5 95t95 142t35 173.5q0 185 -130.5 315.5t-315.5 130.5zM734 253h-237q-7 0 -14 3q-22 9 -22 33v237q0 10 5 18.5
t13 13.5t18 5q8 0 14.5 -3t11.5 -8t8 -11.5t3 -14.5v-200h200q10 0 18.5 -5t13.5 -13.5t5 -18.5t-5 -18t-13.5 -13t-18.5 -5zM734 253z" />
<glyph glyph-name="uniE626" unicode="&#xe626;" horiz-adv-x="1025"
d="M994 79q-18 9 -16 30.5t27 46.5q24 27 17.5 54.5t-33.5 40.5q-17 8 -24.5 17.5t-2 20t26.5 19.5q20 7 27 30.5t-1 52.5t-28 53q-17 19 -92 24.5t-142 1.5l-67 -4q3 2 3 145q0 69 -14 109t-37.5 53.5t-60.5 12.5q-18 0 -28.5 -5t-17 -13t-11 -26.5t-7.5 -38t-10 -56.5
t-16 -74q-12 -47 -38 -94t-54 -80t-55.5 -59t-44 -39t-17.5 -13v-386q8 -12 20 -21t25.5 -15.5t25 -11t23.5 -8.5t16 -6q9 -4 65 -10.5t105.5 -11t51.5 -4.5q4 0 11 0.5t30 2.5t45 4.5t52 6.5t56.5 8t53.5 9.5t47 11t33.5 13t15.5 14.5q5 17 4 30.5t-3.5 23t2.5 17.5t21 15
q14 5 23 14.5t12 20.5t3 23t-3.5 22t-8.5 18t-10 11zM0 295v-380q0 -28 20 -48.5t49 -20.5h137v518h-137q-29 0 -49 -20.5t-20 -48.5zM0 295z" />
<glyph glyph-name="uniE627" unicode="&#xe627;" horiz-adv-x="1025"
d="M512 623q-167 0 -304.5 -89.5t-205.5 -236.5q-4 -9 0 -18q45 -96 121 -169.5t177 -115t212 -41.5q167 0 304.5 89.5t205.5 236.5q1 3 1.5 6t0 6t-1.5 6q-68 147 -205.5 236.5t-304.5 89.5zM512 57q-96 0 -163.5 67.5t-67.5 163.5t67.5 163.5t163.5 67.5t163.5 -67.5
t67.5 -163.5q0 -47 -18.5 -89.5t-49.5 -73.5t-73.5 -49.5t-89.5 -18.5zM364 288q0 -61 43.5 -104.5t104.5 -43.5t104.5 43.5t43.5 104.5t-43.5 104.5t-104.5 43.5t-104.5 -43.5t-43.5 -104.5z" />
<glyph glyph-name="uniE628" unicode="&#xe628;"
d="M482 83q-24 0 -41.5 -17.5t-17.5 -42.5t17.5 -42.5t42 -17.5t42 17.5t17.5 42.5q0 16 -8 30t-21.5 22t-30.5 8zM769 83q-25 0 -42.5 -17.5t-17.5 -42.5q0 -16 8 -30t21.5 -22t30.5 -8q25 0 42.5 17.5t17.5 42.5q0 38 -34 54q-13 6 -26 6zM839 193h-417l-143 425
q-7 18 -29 18h-127q-13 0 -22 -8t-9 -20q0 -4 1 -7t2.5 -6t3.5 -5.5t4.5 -4.5t5.5 -3.5t6.5 -2t7.5 -0.5h105l143 -424q7 -19 29 -19h439q13 0 21.5 8t8.5 20.5t-8.5 20.5t-21.5 8zM904 524l-516 45q-12 1 -18.5 -7t-1.5 -20l90 -270q4 -12 16 -21.5t24 -9.5h377q12 0 22 10
t11 23l23 216q1 8 -2 15.5t-10 12.5t-15 6z" />
<glyph glyph-name="uniE629" unicode="&#xe629;"
d="M154 686v-646h146l-14 -208l240 208h344v646h-716zM752 176h-134v159h-192v-159h-134v382h134v-148h192v148h134v-382z" />
<glyph glyph-name="uniE62A" unicode="&#xe62a;"
d="M328 -66q-3 0 -5.5 0.5t-5.5 2.5q-14 6 -14 22v128h-193q-10 0 -17.5 7t-7.5 18v549q0 10 7.5 17.5t17.5 7.5h804q7 0 13 -3.5t9 -9t3 -12.5v-549q0 -11 -7 -18t-18 -7h-401l-169 -146q-7 -7 -16 -7zM171 172h188q10 0 17.5 -7.5t7.5 -17.5v-73l103 92q7 6 17 6h350v426
h-683v-426zM739 485h-454q-5 0 -9.5 2t-8 5t-5.5 8t-2 10q0 10 7.5 17.5t17.5 7.5h454q3 0 5.5 -0.5t4.5 -1.5t4 -2.5t3.5 -3t3 -3.5t2.5 -4.5t1.5 -5t0.5 -4.5q0 -11 -7 -18t-18 -7zM739 362h-454q-4 0 -8 1t-7 3.5t-5.5 5.5t-3.5 7t-1 8t1 8t3.5 7t5.5 5t7 3.5t8 1.5h454
q10 0 17.5 -7.5t7.5 -18t-7 -17.5t-18 -7zM549 239h-264q-10 0 -17.5 7t-7.5 17.5t7.5 18t17.5 7.5h264q10 0 17.5 -7.5t7.5 -17.5q0 -7 -3.5 -12.5t-9 -9t-12.5 -3.5z" />
<glyph glyph-name="uniE62B" unicode="&#xe62b;"
d="M511 -144q-73 0 -141 22.5t-123 64t-96.5 96.5t-64 123t-22.5 141q0 60 16 118t45 107t70 90t90 70t107 45t119 16q90 0 173 -35.5t142.5 -95.5t95 -142.5t35.5 -172.5q0 -46 -9 -90.5t-26 -84t-41.5 -75.5t-54.5 -66t-66 -54.5t-75.5 -41.5t-84 -26t-89.5 -9zM511 703
q-82 0 -156 -32t-127.5 -85.5t-85.5 -127.5t-32 -155q0 -109 54 -201.5t146 -146t200.5 -53.5t201 53.5t146 146t53.5 201.5q0 165 -117.5 282.5t-282.5 117.5zM465 164v29q0 9 1 17.5t2 15.5l2 10q1 5 3 9.5t4 8.5q1 2 2 4.5t2 4.5t2.5 4t2.5 4t2.5 4.5t3.5 4.5
q10 12 24 26l35 33q15 13 25.5 29.5t10.5 39.5q0 15 -5 27.5t-14 23.5q-5 5 -10.5 8.5t-12.5 6.5t-14.5 4t-16.5 1q-18 0 -32 -6q-5 -3 -9 -5.5t-8 -5.5t-8 -7q-1 -2 -2.5 -3.5t-3 -3.5t-2.5 -3.5t-2 -3.5l-2 -4l-2 -4l-2 -4q-1 -5 -2.5 -10t-2.5 -10t-1 -10l-95 8
q5 37 20 66t39 49q12 10 25.5 18t29.5 13q31 10 66 10q33 0 63 -9.5t53 -28.5q6 -5 11 -10t9.5 -11t8 -12.5t7.5 -13.5q13 -27 13 -64q0 -12 -1.5 -23t-3.5 -20q-2 -4 -3 -7.5t-3 -7.5l-2 -6q-2 -4 -4 -7l-4 -6q-10 -16 -24 -30q-5 -5 -10 -9.5t-11 -10t-11 -10.5
q-16 -13 -25.5 -23t-15.5 -20t-8 -22q-1 -5 -1.5 -12.5t-0.5 -15.5v-20h-92zM450 56q0 25 18 43t44 18q24 0 43 -17q18 -18 19 -42q0 -13 -5 -23.5t-14 -19.5q-18 -17 -43 -17q-12 0 -23.5 4.5t-20.5 12.5q-8 7 -13 18t-5 23z" />
<glyph glyph-name="uniE62C" unicode="&#xe62c;"
d="M505 776q77 0 148.5 -23.5t129 -67t101 -101.5t67.5 -129.5t24 -147.5q0 -64 -17 -125t-47.5 -112t-74 -94.5t-94.5 -74t-112 -47.5t-125 -17q-95 0 -182 37.5t-150 100.5t-100 150t-37 182t37 182t100 150t150 100t182 37zM505 -104q112 0 206.5 55t149.5 149.5
t55 206.5q0 37 -6.5 73.5t-19.5 69.5t-30.5 64t-40.5 57.5t-49.5 49.5t-57.5 40.5t-64 30t-69.5 19t-73.5 6.5q-111 0 -205.5 -55t-149.5 -149.5t-55 -206t55 -206t149.5 -149.5t205.5 -55zM528 138v-59h-58v59h58zM470 564h58v-349h-58v349z" />
<glyph glyph-name="uniE62D" unicode="&#xe62d;"
d="M828 618q65 -65 98 -148t33 -169t-33 -169t-98 -148q-66 -66 -149 -99q-16 -6 -33 -11.5t-33.5 -9t-33.5 -6.5t-34 -4t-35 -1q-43 0 -85 8t-84 24q-82 33 -148 98q-66 66 -98.5 149t-32.5 169t32.5 169t98.5 149q66 65 148.5 97.5t168.5 32.5q15 0 29 -0.5t28 -2.5
t28.5 -4.5t28.5 -6.5t27.5 -8.5t27.5 -9.5q83 -33 149 -99v0zM258 49q53 -53 118.5 -79t134.5 -26q34 0 68 6.5t67 19.5q65 26 117.5 78.5t78.5 118t26 134.5q0 35 -6.5 68.5t-19.5 66.5q-26 65 -78 118q-53 53 -119 79t-135 26q-23 0 -45.5 -3t-44.5 -9t-44 -14
q-66 -26 -118 -78.5t-78.5 -118t-26.5 -134.5t26.5 -134.5t78.5 -118.5v0zM748 602l69 -72l-531 -530l-70 70zM748 602z" />
<glyph glyph-name="uniE62E" unicode="&#xe62e;" horiz-adv-x="1025"
d="M491 6q9 -10 21.5 -10t21.5 10l357 407q4 5 5.5 9.5t0 8t-6 5.5t-11.5 2h-133q-14 0 -23.5 9.5t-9.5 22.5v261q0 9 -4.5 16.5t-12.5 11.5t-17 4h-333q-14 0 -24 -9.5t-10 -22.5v-261q0 -13 -9.5 -22.5t-23.5 -9.5h-133q-14 0 -17.5 -7.5t5.5 -17.5z" />
</font>
</defs></svg>
... ...
... ... @@ -5,9 +5,13 @@
*/
var $ = require('yoho.jquery');
require('./footer');
require('./simple-header');
require('./header');
function cookie(name) {
var cookies = document.cookie,
cookieVal,
... ...
... ... @@ -31,9 +31,8 @@ var $ = require('yoho.jquery'),
for (i = 0; i < items.length; i++) {
item = options.fn(items[i]);
console.log(items.length);
if (i % showNum === 5 || i === 5) {
if (i % showNum === 5 || i === 5) {
//插入切换按钮的位置
out = out + '<li class="logo-brand-switch" data-page="' + Math.floor(i / showNum) + '">' +
... ... @@ -44,7 +43,7 @@ var $ = require('yoho.jquery'),
//插入more的位置,more占的是下一页第一个brand的位置,所以page是i/17
out = out + '<li class="brand-more" data-page="' + Math.floor(i / (showNum + 1)) + '">' +
'<a href="{{href}}">MORE ></a></li>' +
'<a href="javascript:;">MORE ></a></li>' +
'<li data-page="' + Math.floor(i / showNum) + '">' + item + '</li>';
} else {
out = out + '<li data-page="' + Math.floor(i / showNum) + '">' + item + '</li>';
... ... @@ -53,7 +52,7 @@ var $ = require('yoho.jquery'),
//加上最后一个more, more占的是下一页第一个brand的位置,这里已经循环不到brand,所以加在末尾
return out + '<li class="brand-more" data-page="' + Math.floor(i / (showNum + 1)) + '">' +
'<a href="{{href}}">MORE ></a></li></ul>';
'<a href="javascript:;">MORE ></a></li></ul>';
});
},
... ... @@ -74,6 +73,7 @@ var $ = require('yoho.jquery'),
'\{{/brandList}}';
brandTpl = Handlebars.compile(brandHtml);
that.$element.html(brandTpl(data));
that.$element.find('.brand-more a').attr('href', data.moreBrand);
lazyLoad(that.$element.find('img.lazy'));
that._bindEvent();
}
... ... @@ -85,7 +85,6 @@ var $ = require('yoho.jquery'),
lazyLoad($('li[data-page=' + showPage + ']').find('img.lazy').trigger('appear'));
that.$element.find('li[data-page=' + hidePage + ']').find('img').fadeOut('normal', function() {
that.$element.find('li').hide();
that.$element.find('li[data-page=' + showPage + ']').show().find('img').fadeIn();
});
},
... ...
/*var $ = require('yoho.jquery');
module.exports = function(options) {
var openUrl = '';
var defOption = {
title: '',
url: window.location.href,
weixinUrl: '',
image: '',
desc: '',
channel: ''
};
var shareChannels = ['weibo', 'tqq', 'qzone', 'renren', 'qq', 'douban','weixin'];
var sharebox;
var shareCon = '<em><i></i></em>';
defOption = $.extend(defOption, options);
this.weibo = function() {
openUrl = 'http://service.weibo.com/share/share.php?url=' +
defOption.url + '&title=' + defOption.title +
'&appkey=3739328910&searchPic=true&pic=' + defOption.image;
};
this.tqq = function() {
openUrl = 'http://share.v.t.qq.com/index.php?c=share&a=index&url=' +
defOption.url + '&title=' + defOption.title +
'&appkey=c0af9c29e0900813028c2ccb42021792&pic=' + defOption.image;
};
this.qzone = function() {
openUrl = 'http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=' +
defOption.url + '&title=' + defOption.title +
'&desc=&summary=' + defOption.desc + '&site=YOHO!有货&pics=' + defOption.image;
};
this.renren = function() {
openUrl = 'http://widget.renren.com/dialog/share?resourceUrl=' +
defOption.url + '&srcUrl=' + defOption.url + '&desc=' + defOption.desc +
'&title=' + defOption.title + '&description=' +
defOption.desc + '&pic=' + defOption.image;
};
this.qq = function() {
openUrl = 'http://connect.qq.com/widget/shareqq/index.html?url=' +
defOption.url + '&desc=' + defOption.desc + '&title=' +
defOption.title.replace('%', '') + '&desc=&summary=' + defOption.desc +
'&site=YOHO!有货&pics=' + defOption.image;
};
this.weixin = function() {
openUrl = 'http://s.jiathis.com/qrcode.php?url=' +
defOption.weixinUrl + '&desc=' + defOption.desc + '&title=' + defOption.title +
'&description=' + defOption.desc + '&pic=' + defOption.image;
};
this.douban = function() {
openUrl = 'http://www.douban.com/share/service?href=' +
defOption.url + '&text=' + defOption.desc + '&image=' + defOption.image +
'&title=' + defOption.title + '&comment=';
};
if ($.inArray(defOption.channel, shareChannels) === -1) {
alert('不存在的分享平台!');
return false;
}
eval(defOption.channel + '();');
if (defOption.channel === 'weixin') {
if (defOption.self && defOption.self.closest('.share-to').find('.shareWeixin')) {
sharebox = defOption.self.closest('.share-to').find('.shareWeixin');
shareCon += '<div class="con"><h2>分享到微信朋友圈</h2><p class="pic">' +
'<img src="' + openUrl + '" /></p><p class="w">打开微信,点击底部得“发现”,使用<br/>“扫一扫“即可将网页分享到我的朋友圈。</p>' +
'<a href="javascript:void(0)" class="close">x</a></div>';
sharebox.find('div').length > 0 ? sharebox.show() : sharebox.html(shareCon).show();
sharebox.find('.close').click(function() {
$(this).closest('.shareWeixin').hide();
});
}
} else {
window.open(encodeURI(openUrl));
}
};*/
\ No newline at end of file
... ...
... ... @@ -26,10 +26,27 @@ var $ = require('yoho.jquery'),
} else {
this._createPage();
}
if (this.options.orient) {
this._createOrient();
}
this._slideShow();
this._bindEvent();
this._autoplay();
},
_createOrient: function() {
var orientHtml = '<div class="slide-switch">' +
'<a class="prev" href="javascript:;"><span class="iconfont">&#xe60c;</span></a>' +
'<a class="next" href="javascript:;"><span class="iconfont">&#xe60b;</span></a>' +
'</div>';
if (this.$element.find('.slide-switch').length > 0) {
return;
}
this.$element.append(orientHtml);
},
_createPage: function() {
var pageHtml = '<div class="slide-pagination"><div class="slide-pagination-inner">' +
'<div class="slide-shade"></div><div class="slide-pagination-last">',
... ... @@ -69,6 +86,12 @@ var $ = require('yoho.jquery'),
}).on('mouseleave', function() {
that._autoplay();
});
this.$element.on('mouseenter', function() {
$(this).find('.slide-switch').addClass('show');
}).on('mouseleave', function() {
$(this).find('.slide-switch').removeClass('show');
});
},
_nextSlide: function() {
if (this.index === this.len - 1) {
... ... @@ -89,12 +112,14 @@ var $ = require('yoho.jquery'),
_slideShow: function() {
var $img = this.bigItem.eq(this.index).find('img.lazy');
//未加载图片的及时显示
if ($img.attr('src') !== $img.data('original')) {
lazyLoad($img.trigger('appear'));
}
if (this.len > 1) {
this.$element.find('.slide-switch').addClass('show');
lazyLoad($img, {
event: 'sporty'
});
$img.trigger('sporty');
}
this.smallItem.eq(this.index).addClass('focus').siblings().removeClass('focus');
this.bigItem.eq(this.index).fadeIn().siblings().fadeOut();
},
... ... @@ -124,6 +149,7 @@ var $ = require('yoho.jquery'),
$.fn.slider.Constructor = Slider;
$.fn.slider.defaults = {
time: 5000,
orient: true, //左右切换箭头的显示
pagination: null
};
})($);
\ No newline at end of file
... ...
/**
* 逛详情页
* @author: liuyue<yue.liu@yoho.cn>
* @date: 2015/12/16
*/
var $ = require('yoho.jquery'),
lazyLoad = require('yoho.lazyload'),
$commentArea = $('#comment-area'),
articleId = $('#detail-container').data('id'),
yoShare = require('../common/share');
var $commentList = $commentArea.find('.comments-wrap'),
$commentNum = $('#article-comment > .comment-num'),
commenting = false, //评论请求尚未返回变量
locating = false, //评论页面正在跳转
$commentBtn = $('#comment-btn'),
MAX_COMMENTS_WORDS = 100,
$wordCountTip = $('#word-count-tip');
require('./right-side');
require('./img-blink');
//Pjax
require('yoho.pjax');
lazyLoad({
failure_limit: 50
});
//点击评论滑到评论区
$('#article-comment').click(function() {
$('html, body').animate({
scrollTop: $commentArea.offset().top
}, 800);
});
//文章点赞与取消点赞
$('#prise-btn').click(function() {
var prising = false,
url,
$this = $(this);
if (prising) {
return;
}
$this.toggleClass('liked');
if ($this.hasClass('liked')) {
//点赞
url = '/msg/prise';
} else {
//取消点赞
url = '/msg/cancelprise';
}
prising = true;
$.ajax({
type: 'GET',
url: url,
data: {
id: articleId
}
}).then(function(data) {
if (data.code === 200) {
$this.find('.like-num').html(data.data);
}
prising = false;
});
}).bind('mouseenter mouseleave', function() {
$(this).toggleClass('hover');
});
//文章收藏与取消收藏
$('#collect-btn').click(function() {
var collecting = false,
url,
col,
$this = $(this);
if (collecting) {
return;
}
if ($this.hasClass('collected')) {
//取消点赞
url = '/msg/cancelcollect';
col = 0;
} else {
//点赞
url = '/msg/collect';
col = 1;
}
collecting = true;
$.ajax({
type: 'GET',
url: url,
data: {
id: articleId
}
}).then(function(data) {
var hrefUrl;
switch (data.code) {
case 401:
//防止从已有col的页面再次进行跳转后出错的情况
if (/\?col=(1|0)/.test(location.href)) {
hrefUrl = location.href.replace(/\?col=(1|0)/, '?col=' + col);
} else {
hrefUrl = location.href + '?col=' + col;
}
location.href = 'http://www.yohobuy.com/signin.html?refer=' + encodeURI(hrefUrl);
break;
case 400:
alert(data.message);
break;
case 200:
if (/\?col=(1|0)/.test(location.href)) {
//如果页面url中含有col,为了防止页面刷新时收藏或者取消收藏会根据col来的问题,进行页面跳转拿掉参数
location.href = location.href.replace(/\?col=(1|0)/, '');
} else {
$this.toggleClass('collected');
}
break;
}
collecting = false;
});
}).bind('mouseenter mouseleave', function() {
$(this).toggleClass('hover');
});
//Share
function share(channel, self) {
var title = $('#share-title').val();
var desc = document.title.replace(/(^\s*)|(\s*$)/g, '');
var image = $('#share-img').val();
var weixinUrl = $('#weixin-url').val();
if (channel === 'weibo' || channel === 'tqq') {
yoShare({
channel: channel,
title: title,
image: image
});
} else {
yoShare({
channel: channel,
title: '【YOHO!有货】最快、最全、最权威的潮流品牌型录发布平台',
desc: desc,
image: image,
self: self,
weixinUrl: weixinUrl
});
}
}
$('.article-share').delegate('.share-a', 'click', function(e) {
var $el = $(this),
type = $el.data('type');
e.preventDefault();
if (type === 'weixin') {
share(type, $el);
} else {
share(type);
}
});
//评论
function comment(id) {
var commentInfo = $('#comment-info').val();
if (commentInfo === '') {
alert('评论不能为空');
return false;
}
commenting = true;
$.ajax({
url: '/msg/comment',
data: {
article_id: id,
comment: commentInfo
},
type: 'post',
success: function(data) {
switch (data.code) {
case 401:
locating = true;
location.href = 'http://www.yohobuy.com/signin.html?refer=' +
window.escape(location.href + '#comment-info');
break;
case 400:
alert(data.message);
break;
case 200:
if (data.data) {
$commentList.html(data.data.content);
$commentNum.html(data.data.count);
//clear comment-text
$('#comment-info').val('').keyup();
}
break;
}
commenting = false;
}
});
}
$commentBtn.click(function(e) {
//页面正在跳转或者正在AJAX请求时评论无效
if (locating || commenting) {
return false;
}
//字数不符合要求
if ($('#comment-info').val().length - MAX_COMMENTS_WORDS > 0) {
return;
}
e.preventDefault();
comment($('#detail-container').data('id'));
});
//comment pager pjax
$(document).pjax('.comment-pager a', '#pjax-container', {
timeout: 5000
});
//分页后移动到评论框的位置
$(document).on('pjax:end', function() {
$('html,body').scrollTop($('#comment-info').offset().top);
});
$(document).ready(function() {
var commonlist = $('.comments-list').find('li').length;
if (commonlist === 0) {
$('.commnets-resultwrapper').hide();
$('.comments-empty').show();
} else {
$('.commnets-resultwrapper').show();
$('.comments-empty').hide();
}
});
$('#comment-info').keyup(function() {
var len = $(this).val().length,
showTxt;
if (len === 0) {
$wordCountTip.html('');
$commentBtn.addClass('disable');
} else {
if (len - MAX_COMMENTS_WORDS <= 0) {
showTxt = '还可以输入' + (MAX_COMMENTS_WORDS - len) + '字';
$commentBtn.removeClass('disable');
} else {
showTxt = '已超过<span class="exceed-count">' + (len - MAX_COMMENTS_WORDS) + '</span>字';
$commentBtn.addClass('disable');
}
}
$wordCountTip.html(showTxt);
});
//init
$('#comment-info').trigger('keyup');
\ No newline at end of file
... ...
/**
* 图片移入闪动效果JS
* @auhor: xuqi<qi.xu@yoho.cn>
* @date: 2015/7/29
*/
var $ = require('yoho.jquery');
$('.guang-page').on('mouseover', 'a img, a .bg-img', function(e) {
var $el = $(e.target);
//slider中的图片不做此效果
if ($el.closest('.slider').length > 0) {
return;
}
$el.addClass('blink');
setTimeout(function() {
$el.removeClass('blink');
}, 100);
});
\ No newline at end of file
... ...
/**
* 逛首页
* @author: xuqi<qi.xu@yoho.cn>
* @date: 2015/12/15
*/
var $ = require('yoho.jquery');
var msg = require('./msg');
require('yoho.pjax');
require('../common/slider');
require('./img-blink');
require('./right-side');
$('#slider').slider(); //初始化slider
$(document).pjax('.pjax-link, .msg-pager a', '#pjax-container', {
timeout: 2000
});
$(document).on('pjax:end', function() {
msg.dotLazy();
});
\ No newline at end of file
... ...
/**
* 逛编辑页、列表页
* @author: xuqi<qi.xu@yoho.cn>
* @date: 2015/12/15
*/
require('./msg');
require('./img-blink');
require('./right-side');
\ No newline at end of file
... ...
var $ = require('yoho.jquery'),
lazyLoad = require('yoho.lazyload');
var prising;
require('yoho.dotdotdot');
//资讯文字截取和lazyload
function dotLazy() {
//文字截取
$('.msg-title, .msg-content .content').dotdotdot({
wrap: 'letter'
});
//Lazyload
lazyLoad($('#msg-list img.lazy'));
}
//资讯点赞
$('.guang-page').on('click', '.like-icon', function() {
var $this = $(this),
msgId = $this.closest('.msg-content').data('id'),
url;
//同一资讯多次点击归一处理
if (prising === msgId) {
return;
}
prising = msgId;
$this.toggleClass('liked');
//点赞或取消点赞
if ($this.hasClass('liked')) {
url = '/msg/prise';
} else {
url = '/msg/cancelprise';
}
$.ajax({
type: 'GET',
url: url,
data: {
id: msgId,
time: new Date().getTime()
}
}).then(function(data) {
if (data.code === 200) {
if (data.data * 1 === 0) {
$this.next('span').addClass('num-0').children('.num').html('0'); //隐藏数字显示
} else {
$this.next('span').removeClass('num-0').children('.num').html(data.data);
}
}
prising = false;
});
}).on('mouseenter mouseleave', '.like-icon', function() {
$(this).closest('.like').toggleClass('hover');
});
dotLazy();
exports.dotLazy = dotLazy;
\ No newline at end of file
... ...
/**
* 右侧栏文字截取js
*/
var $ = require('yoho.jquery'),
lazyLoad = require('yoho.lazyload');
require('yoho.dotdotdot');
$('.ex-reco-context').dotdotdot({
wrap: 'letter'
});
lazyLoad($('.ads img.lazy'));
\ No newline at end of file
... ...
... ... @@ -827,6 +827,7 @@ function actionSearch() {
$('#query_key').search(searchDomain);
}
/**
* 初始化函数
* @return {[type]} [description]
... ...
/**
* 找回密码
* @author: xuqi<qi.xu@yoho.cn>
* @date: 2015/12/14
*/
var $ = require('yoho.jquery'),
phoneRegx = require('./mail-phone-regx').phoneRegx;
var $cr = $('#country-code-hide'),
$phoneNum = $('#phone-num'),
$ca = $('#captcha'),
$tipPanel = $('#tip-panel'),
emailReg = /^[.\-_a-zA-Z0-9]+@[\-_a-zA-Z0-9]+\.[a-zA-Z0-9]/,
acAccount = [
['qq.com', '163.com', '126.com', 'sina.com', 'gmail.com',
'sohu.com', 'hotmail.com', '139.com', '189.com'], //数字顺序
['gmail.com', 'qq.com', '163.com', '126.com', 'sina.com',
'sohu.com', 'hotmail.com', '139.com', '189.com'] //组合顺序
],
$ccList = $('#country-code-list'),
$cc = $('#country-code'),
$btn = $('#find-btn'),
$accErr = $('#account-err'),
$caErr = $('#captcha-err'),
time, //timeout-id
caCount = 4, //验证码位数
hasPh = false,
hasCa = false;
require('../../plugin/jquery.placeholder');
/*function getSource(column, postition, event) {
try {
dataLayer.push({
louceng: column,
weizhi: postition,
event: event
});
} catch (e) {}
}*/
function imgcode() {
$('#captcha-img').attr('src', 'http://www.yohobuy.com/passport/images?t=' + Math.random());
//getSource('yoho_family_web', '换一张', 'homepage_man');
}
function enableBtn() {
if (hasPh && hasCa) {
$btn.removeClass('disable').prop('disabled', false);
} else {
$btn.addClass('disable').prop('disabled', true);
}
}
function vaPn(v) {
var pass = true,
errTxt = '';
v = $.trim(v);
if (v !== '') {
if (/^[0-9]+$/.test(v)) {
if (phoneRegx[$cr.val()].test(v)) {
pass = true;
} else {
errTxt = '手机号码格式不正确, 请重新输入';
pass = false;
}
} else {
if (emailReg.test(v)) {
pass = true;
} else {
errTxt = '邮箱格式不正确, 请重新输入';
pass = false;
}
}
} else {
errTxt = '账户名不能为空';
pass = false;
}
hasPh = pass;
return {
pass: pass,
errTxt: errTxt
};
}
function vaCa() {
var v = $.trim($ca.val());
if (v === '' || v.length < caCount) {
hasCa = false;
enableBtn();
return;
} else {
$.ajax({
type: 'POST',
url: '/passport/back/authcode',
data: {
code: v,
mobile: $('#phone-num').val(),
area: $('#country-code-hide').val()
}
}).then(function(data) {
if (data.code === 200) {
hasCa = true;
} else {
hasCa = false;
imgcode();
}
enableBtn();
});
}
}
$ca.attr('maxlength', caCount);
//IE8 placeholder
$('input').placeholder();
$('#change-captcha, #captcha-img').on('click', function() {
imgcode();
});
$cc.on('click', function(e) {
e.stopPropagation();
if ($ccList.css('style') === 'block') {
$ccList.slideUp('fast');
} else {
$ccList.slideDown('fast');
}
});
$ccList.delegate('li', 'click', function(e) {
var $cur = $(this),
code = $cur.data('cc'),
pnVa;
e.stopPropagation();
$cr.val(code);
$cc.find('em').html($cur.text());
//切换后验证手机号码
if ($.trim($phoneNum.val()) !== '') {
pnVa = vaPn($phoneNum.val());
enableBtn();
if (hasPh) {
$accErr.addClass('hide');
$phoneNum.removeClass('error');
} else {
$accErr.removeClass('hide').text(pnVa.errTxt);
$phoneNum.addClass('error');
}
}
$ccList.slideUp('fast');
});
$(document).click(function() {
if ($tipPanel.css('display') === 'block') {
$tipPanel.slideUp();
}
if ($ccList.css('display') === 'block') {
$ccList.slideUp();
}
});
$phoneNum.keyup(function() {
var account = $.trim($(this).val()),
html = '',
acs,
i;
//输入@时显示自动补全列表
if (account.indexOf('@') !== -1 && account.lastIndexOf('@') === account.indexOf('@')) {
if (/^[0-9]*@$/.test(account)) {
//数字顺序
acs = acAccount[0];
} else {
acs = acAccount[1];
}
for (i = 0; i < acs.length; i++) {
html += '<li>' + account.slice(0, account.indexOf('@')) + '@' + acs[i] + '</li>';
}
$tipPanel.html(html).slideDown();
} else {
$tipPanel.slideUp();
}
vaPn(account);
enableBtn();
}).blur(function() {
time = setTimeout(function() {
var pnVa = vaPn($phoneNum.val());
if (pnVa.pass) {
$accErr.addClass('hide');
$phoneNum.removeClass('error');
} else {
$accErr.removeClass('hide').find('em').text(pnVa.errTxt);
$phoneNum.addClass('error');
}
}, 170);
}).focus(function() {
$(this).removeClass('error');
//focus隐藏错误提示
$accErr.addClass('hide');
});
//验证码在鼠标移开后验证, keyup时不再验证
$ca.blur(function() {
var errTxt = $.trim($ca.val()) === '' ? '验证码不能为空' : '验证码不正确';
if (hasCa) {
$caErr.addClass('hide');
$ca.removeClass('error');
} else {
$caErr.removeClass('hide').find('em').text(errTxt);
$ca.addClass('error');
//验证码错误则刷新验证码
imgcode();
}
}).focus(function() {
$(this).removeClass('error');
//focus隐藏错误提示
$caErr.addClass('hide');
}).keyup(function() {
vaCa();
});
$tipPanel.delegate('li', 'click', function(e) {
var account = $(this).text(),
pnVa;
e.stopPropagation();
$phoneNum.val(account);
if (time) {
clearTimeout(time);
pnVa = vaPn(account);
enableBtn();
if (pnVa.pass) {
$accErr.addClass('hide');
$phoneNum.removeClass('error');
} else {
$accErr.removeClass('hide').find('em').text(pnVa.errTx);
$phoneNum.addClass('error');
}
time = null;
}
$tipPanel.slideUp();
});
$('#find-btn').click(function(e) {
//getSource('yoho_family_web', '下一步按钮', 'homepage_man');
if (/^[0-9]+$/.test($.trim($phoneNum.val()))) {
$('#find-form').attr('action', '/passport/back/mobile');
}
if ($(this).hasClass('disable')) {
return;
}
if (!hasCa || !hasPh) {
e.preventDefault();
return true;
}
});
\ No newline at end of file
... ...