Toggle navigation
Toggle navigation
This project
Loading...
Sign in
fe
/
YOHOBUYPC
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
2
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Plain Diff
Browse Files
Authored by
梁志锋
9 years ago
Commit
e4e5b4bed9ec7f040dfeae410a8e2490c4eeb299
2 parents
948c91c4
893bd5b1
Merge branch 'develop' of
http://git.dev.yoho.cn/web/yohobuy
into beta
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
223 additions
and
75 deletions
library/LibModels/Web/Product/SearchData.php
library/Plugin/HelperSearch.php
template/www.yohobuy.com/actions/product/search/search.phtml
web-static/js/passport/reg.js
yohobuy/www.yohobuy.com/application/models/Product/Search.php
yohobuy/www.yohobuy.com/application/modules/Product/controllers/List.php
yohobuy/www.yohobuy.com/application/modules/Product/controllers/Search.php
library/LibModels/Web/Product/SearchData.php
View file @
e4e5b4b
...
...
@@ -4,6 +4,7 @@ namespace LibModels\Web\Product;
use
Api\Yohobuy
;
class
SearchData
extends
\LibModels\Wap\Product\SearchData
{
public
static
$shops_url
=
'http://101.200.31.165/yohosearch/shops.json'
;
/**
* 获取搜索的服务地址
*
...
...
@@ -129,6 +130,16 @@ class SearchData extends \LibModels\Wap\Product\SearchData
}
/**
* 搜索品牌店铺信息
* @param array $params 参数
* @return array
*/
public
static
function
getShop
(
array
$params
)
{
return
Yohobuy
::
get
(
self
::
$shops_url
,
$params
);
}
/**
* 获取最近浏览记录
* @param int $limit
* @return json
...
...
library/Plugin/HelperSearch.php
View file @
e4e5b4b
...
...
@@ -13,8 +13,7 @@ class HelperSearch
*/
public
static
$params
=
array
();
private
static
$from
=
''
;
public
static
$options
=
array
();
//当前页
public
static
$page
=
1
;
...
...
@@ -29,19 +28,13 @@ class HelperSearch
*/
public
static
$listnav
=
array
();
private
static
function
setFrom
(
$from
=
''
)
{
if
(
$from
)
{
self
::
$from
=
$from
;
}
}
//设置导航
private
static
function
setListNav
(
$option
=
array
()
)
private
static
function
setListNav
()
{
$options
=
self
::
$options
;
$cookieChannel
=
isset
(
$_COOKIE
[
'_Channel'
])
?
$_COOKIE
[
'_Channel'
]
:
'boys'
;
if
(
isset
(
$option
[
'brandName'
])
&&
!
empty
(
$option
[
'brandName'
]))
{
$initNav
=
$option
[
'brandName'
];
if
(
isset
(
$options
[
'brandName'
])
&&
!
empty
(
$options
[
'brandName'
]))
{
$initNav
=
$options
[
'brandName'
];
}
else
{
$initNav
=
'列表'
;
}
...
...
@@ -64,6 +57,7 @@ class HelperSearch
{
$result
=
array
();
self
::
$params
=
$_GET
;
self
::
$options
=
$options
;
unset
(
self
::
$params
[
'/'
]);
unset
(
self
::
$params
[
'page'
]);
unset
(
self
::
$params
[
'/sale'
]);
...
...
@@ -80,10 +74,8 @@ class HelperSearch
$result
[
'filters'
][
'checkedConditions'
][
'clearUrl'
]
=
self
::
current
();
//频道
$result
[
'filters'
][
'channel'
]
=
self
::
gender
(
$filter
);
//分类
$result
[
'filters'
][
'sort'
]
=
array
();
//品牌
$result
[
'filters'
][
'brand'
]
=
self
::
brand
(
$filter
,
$options
);
$result
[
'filters'
][
'brand'
]
=
self
::
brand
(
$filter
);
//价格
$result
[
'filters'
][
'price'
]
=
self
::
price
(
$filter
);
$result
[
'filters'
][
'customPrice'
]
=
self
::
customPrice
(
$filter
);
...
...
@@ -109,8 +101,10 @@ class HelperSearch
$result
[
'opts'
][
'pageCount'
]
=
$data
[
'data'
][
'page_total'
];
$result
[
'opts'
][
'nextHref'
]
=
(
$next
=
self
::
next
(
$data
[
'data'
][
'page_total'
],
$data
[
'data'
][
'filter'
]))
?
$next
[
'href'
]
:
''
;
$result
[
'hasNextPage'
]
=
self
::
next
(
$data
[
'data'
][
'page_total'
]);
//分类
$result
[
'leftContent'
][][
'allSort'
]
=
isset
(
$filter
[
'group_sort'
])
?
self
::
groupSort
(
$filter
[
'group_sort'
],
$options
)
:
array
();
//分类条件
$result
[
'filters'
][
'sort'
]
=
isset
(
$filter
[
'group_sort'
])
?
self
::
searchSort
(
$filter
[
'group_sort'
])
:
array
();
//左侧分类分类
$result
[
'leftContent'
][][
'allSort'
]
=
isset
(
$filter
[
'group_sort'
])
?
self
::
groupSort
(
$filter
[
'group_sort'
])
:
array
();
//一周新品上架
$result
[
'leftContent'
][][
'newSales'
]
=
isset
(
$filter
[
'recent'
])
?
self
::
recentShelve
(
$filter
[
'recent'
])
:
array
();
//全部折扣
...
...
@@ -121,6 +115,9 @@ class HelperSearch
$result
[
'pager'
]
=
self
::
pager
(
$result
[
'totalCount'
],
$options
[
'viewNum'
]);
//选中条件
$result
[
'filters'
][
'checkedConditions'
][
'conditions'
]
=
self
::
getSelected
();
if
(
isset
(
$options
[
'controller'
])
&&
$options
[
'controller'
]
==
'Search'
)
{
self
::
setSearchNav
(
$data
[
'data'
][
'total'
]);
}
$result
[
'pathNav'
]
=
self
::
$listnav
;
return
$result
;
}
...
...
@@ -193,6 +190,9 @@ class HelperSearch
'name'
=>
$pval
[
'standard_name'
],
'href'
=>
self
::
buildUrl
(
$tmpParams
)
);
if
(
self
::
checkSearch
(
'parameter_'
.
$val
[
'standard_id'
]))
{
return
array
();
}
}
$sub
[]
=
array
(
'name'
=>
$pval
[
'standard_name'
],
...
...
@@ -232,6 +232,10 @@ class HelperSearch
'href'
=>
self
::
buildUrl
(
$params
)
);
}
if
(
self
::
checkSearch
(
'gender'
))
{
return
array
();
}
$result
=
array
();
foreach
(
$filter
[
'gender'
]
as
$key
=>
$val
)
{
$result
[]
=
array
(
...
...
@@ -247,14 +251,18 @@ class HelperSearch
/**
* 组织搜索列表页面的左侧分类
* @param array $sort
* @param array $option
* @return array
*/
public
static
function
groupSort
(
$sort
,
$option
=
array
()
)
public
static
function
groupSort
(
$sort
)
{
$options
=
self
::
$options
;
if
(
isset
(
$options
[
'controller'
])
&&
$options
[
'controller'
]
!=
'Search'
)
{
return
array
();
}
//设置导航
self
::
setListNav
(
$option
);
self
::
setListNav
(
$option
s
);
$params
=
self
::
$params
;
$result
=
array
(
'all'
=>
array
(
...
...
@@ -294,16 +302,48 @@ class HelperSearch
}
}
$result
[
'list'
]
=
$sortList
;
return
$result
;
}
public
static
function
searchSort
(
$sort
)
{
$result
=
array
();
$options
=
self
::
$options
;
if
(
!
isset
(
$options
[
'controller'
])
||
$options
[
'controller'
]
!=
'Search'
)
{
return
$result
;
}
$params
=
self
::
$params
;
foreach
(
$sort
as
$key
=>
$val
)
{
$result
[
$key
][
'id'
]
=
$val
[
'sort_id'
];
$result
[
$key
][
'name'
]
=
$val
[
'sort_name'
];
if
(
isset
(
$val
[
'sub'
])
&&
!
empty
(
$val
[
'sub'
]))
{
foreach
(
$val
[
'sub'
]
as
$k
=>
$v
)
{
$result
[
$key
][
'sub'
][
$k
][
'href'
]
=
self
::
buildUrl
(
array
(
'msort'
=>
$val
[
'sort_id'
],
'misort'
=>
$v
[
'sort_id'
]));
$result
[
$key
][
'sub'
][
$k
][
'name'
]
=
$v
[
'sort_name'
];
if
(
isset
(
$params
[
'misort'
])
&&
$params
[
'misort'
]
==
$v
[
'sort_id'
])
{
unset
(
$params
[
'misort'
]);
self
::
$selected
[
'sort'
]
=
array
(
'name'
=>
$v
[
'sort_name'
],
'href'
=>
self
::
buildUrl
()
);
}
}
}
}
if
(
self
::
checkSearch
(
'msrot'
)
||
self
::
checkSearch
(
'misort'
))
{
return
array
();
}
return
$result
;
}
/**
* 品牌,可以多选
* @param array $filter
* @param array $options
* @return array
*/
public
static
function
brand
(
$filter
,
$options
=
array
())
{
public
static
function
brand
(
$filter
)
{
$options
=
self
::
$options
;
//品牌列表返回空
if
(
isset
(
$options
[
'brandName'
]))
{
return
array
();
...
...
@@ -311,11 +351,15 @@ class HelperSearch
$result
=
array
(
'default'
=>
array
()
,
'brandIndex'
=>
array
(
'0~9'
,
'A~G'
,
'H~N'
,
'O~T'
,
'U~Z'
)
,
array
(
'index'
=>
'all'
,
'name'
=>
'全部'
),
array
(
'index'
=>
'0-9'
,
'name'
=>
'0 ~ 9'
)
),
'brandsShow'
=>
array
()
);
$params
=
self
::
$params
;
...
...
@@ -341,12 +385,18 @@ class HelperSearch
)));
}
$this_brand
=
array
(
'brand_id'
=>
$v
[
'id'
],
'name'
=>
$v
[
'brand_name'
],
'alif'
=>
$v
[
'brand_alif'
],
'id'
=>
$v
[
'id'
],
'href'
=>
$url
,
'name'
=>
$v
[
'brand_name'
],
'key'
=>
$v
[
'brand_name'
],
'active'
=>
in_array
(
$v
[
'id'
],
$brandIds
)
?
true
:
false
);
if
(
is_numeric
(
$v
[
'brand_alif'
]))
{
$this_brand
[
'index'
]
=
'0-9'
;
}
else
{
$this_brand
[
'index'
]
=
strtolower
(
$v
[
'brand_alif'
]);
}
//默认品牌
if
(
count
(
$result
[
'default'
])
<
10
)
{
$result
[
'default'
][]
=
$this_brand
;
...
...
@@ -367,9 +417,16 @@ class HelperSearch
'href'
=>
self
::
buildUrl
(
$params
)
);
}
//品牌列表排序
ksort
(
$brandList
);
//品牌列表排序, 添加品牌索引
$index_key
=
array
();
foreach
(
$brandList
as
$key
=>
$val
)
{
if
(
$key
&&
!
in_array
(
$key
,
$index_key
))
{
$index
[
'index'
]
=
strtolower
((
$key
));
$index
[
'name'
]
=
$key
;
$result
[
'brandIndex'
][]
=
$index
;
$index_key
[]
=
$index
;
}
if
(
is_array
(
$val
))
{
foreach
(
$val
as
$v
)
{
$result
[
'brandsShow'
][]
=
$v
;
...
...
@@ -378,6 +435,10 @@ class HelperSearch
}
unset
(
$brandList
);
}
//搜索页已选中,返回空
if
(
self
::
checkSearch
(
'brand'
))
{
return
array
();
}
return
$result
;
}
/**
...
...
@@ -402,6 +463,7 @@ class HelperSearch
'href'
=>
self
::
buildUrl
(
$params
)
);
}
$result
[]
=
array
(
'name'
=>
$v
[
'size_name'
],
'href'
=>
self
::
buildUrl
(
array_merge
(
$params
,
array
(
...
...
@@ -409,6 +471,9 @@ class HelperSearch
)))
,
);
}
if
(
self
::
checkSearch
(
'size'
))
{
return
array
();
}
}
return
$result
;
}
...
...
@@ -443,6 +508,9 @@ class HelperSearch
))) ,
);
}
if (self::checkSearch('color')) {
return array();
}
return
$result
;
}
...
...
@@ -474,6 +542,9 @@ class HelperSearch
);
}
}
if (self::checkSearch('price')) {
return array();
}
//返回价格条件
foreach (
$filter['price']
as
$key
=>
$val
) {
$val
= trim(
$val
,'¥');
...
...
@@ -556,6 +627,10 @@ class HelperSearch
'href' =>
$url
,
);
}
//搜索页已选中,返回空
if (self::checkSearch('style')) {
return array();
}
$data[0]
= array(
'attr' => 'style',
'name' => '风格',
...
...
@@ -942,7 +1017,13 @@ class HelperSearch
}
return
$result
;
}
//分页
/**
* 分页
* @param
$total
* @param
$viewNum
* @return mixed
*/
public static function pager(
$total
,
$viewNum
){
$Paging
= new Paging('Yoho');
return
$Paging->setTotal
(
$total
)->setSize(
$viewNum
)->view(0);
...
...
@@ -968,4 +1049,67 @@ class HelperSearch
return
$result
;
}
}
/**
* 组织品牌店铺信息
*/
public static function shop(
$shop
)
{
$url
= Helpers::url('','',
$shop['brand_domain']
);
$shopEntry
= array();
$sort
= array();
foreach (
$shop['sort']
as
$msort
) {
if (!isset(
$msort['sub']
) || empty(
$msort['sub']
)) {
continue;
}
foreach (
$msort['sub']
as
$mkey
=>
$misort
) {
if (count(
$sort
) >= 10) {
break 2;
}
$sortInfo['href']
=
$url
.'/?msort=' .
$msort['sort_id']
. '&misort=' .
$misort['sort_id']
;
$sortInfo['name']
=
$misort['sort_name']
;
$sort
[] =
$sortInfo
;
}
}
$shopEntry['home']
=
$url
;
$shopEntry['logo']
= Images::getSourceUrl(
$shop['brand_ico']
,'brandLogo');
$shopEntry['shopName']
=
$shop['brand_name']
;
$shopEntry['sort']
=
$sort
;
return
$shopEntry
;
}
public static function checkSearch(
$param
)
{
if (isset(self::
$params[$param]
) && isset(self::
$options['controller']
) && self::
$options['controller']
== 'Search') {
return true;
}
}
/**
* 设置搜索页导航
* @param
$total
*/
public static function setSearchNav(
$total
)
{
self::
$listnav[0]
= array(
'href' => '/',
'name' => '首页'
);
$param
= self::
$params
;
$options
= self::
$options
;
if (isset(
$options['controller']
) &&
$options['controller']
== 'Search' && isset(
$param['query']
)) {
self::
$listnav[1]
= array(
'href' => '',
'name' => "
‘
".
$param['query']
."
’
共
".
$total
."
个结果
"
);
}else{
self::
$listnav[1]
= array(
'href' => '',
'name' => '所有商品'
);
}
}
}
...
...
template/www.yohobuy.com/actions/product/search/search.phtml
View file @
e4e5b4b
{
{>
layout/header
}
}
<div
class=
"product-search-page product-page yoho-page center-content"
>
{
{#
search
}
}
{
{>
layout/path-nav
}
}
{
{>
layout/path-nav
}
}
{
{>
product/standard-content
}
}
{
{>
product/shop-entry
}
}
{
{>
product/latest-walk
}
}
{
{>
product/standard-content
}
}
{
{>
product/latest-walk
}
}
{
{/
search
}
}
</div>
{
{>
layout/footer
}
}
\ No newline at end of file
{
{>
layout/footer
}
}
...
...
web-static/js/passport/reg.js
View file @
e4e5b4b
...
...
@@ -136,9 +136,10 @@ function picCaptchaAjaxFn(page, callback) {
type
:
'POST'
,
url
:
url
,
data
:
{
code
:
$ca
.
val
(),
mobile
:
$pn
.
val
(),
area
:
$region
.
text
().
split
(
'+'
)[
1
]
code
:
$ca
.
val
()
//mobile: $pn.val(),
//area: $region.text().split('+')[1]
}
}).
then
(
function
(
data
)
{
switch
(
data
.
code
)
{
...
...
@@ -530,7 +531,7 @@ exports.init = function(page) {
data
:
{
area
:
$region
.
text
().
split
(
'+'
)[
1
],
mobile
:
$pn
.
val
(),
captcha
:
$ca
.
val
(),
verifyCode
:
$ca
.
val
(),
code
:
$mc
.
val
(),
password
:
$pwd
.
val
()
}
...
...
yohobuy/www.yohobuy.com/application/models/Product/Search.php
View file @
e4e5b4b
...
...
@@ -49,12 +49,7 @@ class SearchModel
//用户浏览记录
$result
[
'data'
][
'filter'
][
'review'
]
=
SearchData
::
getRecentReview
();
// 组织模板数据
$list
=
HelperSearch
::
getList
(
$result
,
$options
);
$data
=
array
(
//初始化js
'productListPage'
=>
true
,
'list'
=>
$list
);
$data
=
HelperSearch
::
getList
(
$result
,
$options
);
}
return
$data
;
}
...
...
@@ -67,31 +62,21 @@ class SearchModel
*/
public
static
function
searchData
(
$condition
,
$options
){
$data
=
self
::
getSearchData
(
$condition
,
$options
);
//过滤频道
if
(
isset
(
$condition
[
'gender'
]))
{
unset
(
$data
[
'list'
][
'filters'
][
'channel'
]);
}
//过滤品牌
if
(
isset
(
$condition
[
'brand'
]))
{
unset
(
$data
[
'list'
][
'filters'
][
'brand'
]);
}
//过滤价格
if
(
isset
(
$condition
[
'price'
]))
{
unset
(
$data
[
'list'
][
'filters'
][
'price'
]);
unset
(
$data
[
'list'
][
'filters'
][
'customPrice'
]);
}
//过滤颜色
if
(
isset
(
$condition
[
'color'
]))
{
unset
(
$data
[
'list'
][
'filters'
][
'color'
]);
}
//过滤风格
if
(
isset
(
$condition
[
'style'
]))
{
unset
(
$data
[
'list'
][
'filters'
][
'seniorChose'
]);
}
//过滤尺码
if
(
isset
(
$condition
[
'size'
]))
{
unset
(
$data
[
'list'
][
'filters'
][
'size'
]);
//获取品牌店铺信息
if
(
isset
(
$condition
[
'query'
]))
{
$param
[
'keyword'
]
=
$condition
[
'query'
];
$result
=
SearchData
::
getShop
(
$param
);
if
(
isset
(
$result
[
'code'
])
&&
$result
[
'code'
]
===
200
&&
isset
(
$result
[
'data'
])
&&
!
empty
(
$result
[
'data'
]))
{
//调用品牌分类
$class
[
'brand'
]
=
$result
[
'data'
][
'id'
];
$brandSort
=
SearchData
::
getClassesData
(
$class
);
$shop
=
$result
[
'data'
];
if
(
isset
(
$brandSort
[
'data'
][
'sort'
])
&&
!
empty
(
$brandSort
[
'data'
][
'sort'
]))
$shop
[
'sort'
]
=
$brandSort
[
'data'
][
'sort'
];
$shopEntry
=
HelperSearch
::
shop
(
$shop
);
}
}
$data
[
'shopEntry'
]
=
isset
(
$shopEntry
)
?
$shopEntry
:
array
();
return
$data
;
}
...
...
yohobuy/www.yohobuy.com/application/modules/Product/controllers/List.php
View file @
e4e5b4b
...
...
@@ -90,7 +90,12 @@ class ListController extends WebAction
$params
=
array_filter
(
$params
);
//每页记录数减1,下一页占位
$params
[
'viewNum'
]
=
$params
[
'viewNum'
]
-
1
;
$data
=
SearchModel
::
getSearchData
(
$params
,
$options
);
$list
=
SearchModel
::
getSearchData
(
$params
,
$options
);
$data
=
array
(
//初始化js
'productListPage'
=>
true
,
'list'
=>
$list
);
$cate
=
array
(
'boys'
,
'girls'
,
'kids'
,
'lifestyle'
);
$this
->
setWebNavHeader
(
$cate
[
$gender
-
1
]);
$this
->
_view
->
display
(
'list'
,
$data
);
...
...
yohobuy/www.yohobuy.com/application/modules/Product/controllers/Search.php
View file @
e4e5b4b
...
...
@@ -30,8 +30,6 @@ class SearchController extends WebAction
foreach
(
$condition
as
$key
=>
$val
){
$condition
[
$key
]
=
rawurldecode
(
$val
);
}
//关键词
$condition
[
'query'
]
=
'鞋'
;
//性別(频道)
$gender_cookie
=
!
isset
(
$_COOKIE
[
'_Gender'
])
?
'3'
:
(
$_COOKIE
[
'_Gender'
]
==
'2,3'
?
2
:
1
);
$gender
=
$this
->
get
(
'gender'
)
?
(
$this
->
get
(
'gender'
)
==
'2,3'
?
2
:
1
)
:
$gender_cookie
;
...
...
@@ -57,7 +55,7 @@ class SearchController extends WebAction
$minImgSize
=
array
(
60
,
80
);
}
//自定义搜索价格
if
(
isset
(
$condition
[
'price'
])
||
!
empty
(
$condition
[
'price'
]))
{
if
(
isset
(
$condition
[
'price'
])
&&
!
empty
(
$condition
[
'price'
]))
{
$price
=
explode
(
','
,
$condition
[
'price'
]);
if
(
!
$price
[
0
])
{
$price
[
0
]
=
0
;
...
...
@@ -90,13 +88,15 @@ class SearchController extends WebAction
$params
=
array_filter
(
$params
);
//每页记录数减1,下一页占位
$params
[
'viewNum'
]
=
$params
[
'viewNum'
]
-
1
;
$options
[
'controller'
]
=
$this
->
_request
->
controller
;
$searchData
=
SearchModel
::
searchData
(
$params
,
$options
);
$cate
=
array
(
'boys'
,
'girls'
,
'kids'
,
'lifestyle'
);
$this
->
setWebNavHeader
(
$cate
[
$gender
-
1
]);
$data
=
array
(
//初始化js
'searchListPage'
=>
true
,
'search'
=>
$searchData
);
$data
[
'search'
]
=
$searchData
[
'list'
];
$this
->
_view
->
display
(
'search'
,
$data
);
}
}
\ No newline at end of file
...
...
Please
register
or
login
to post a comment