|
|
<?php
|
|
|
|
|
|
namespace WebPlugin;
|
|
|
|
|
|
use WebPlugin\Paging;
|
|
|
use LibModels\Web\Product\BrandData;
|
|
|
use LibModels\Web\Product\SearchData;
|
|
|
use Api\Yohobuy;
|
|
|
use Api\Sign;
|
|
|
/**
|
|
|
* 搜索辅助类
|
|
|
*/
|
|
|
class HelperSearch
|
|
|
{
|
|
|
//请求时用的所有参数
|
|
|
public static $params = array();
|
|
|
|
|
|
public static $options = array();
|
|
|
//当前页
|
|
|
public static $page = 1;
|
|
|
public static $pageTotal;
|
|
|
public static $filter;
|
|
|
|
|
|
//选中的条件
|
|
|
public static $selected = array();
|
|
|
|
|
|
//list分类面包屑
|
|
|
public static $listNav = array();
|
|
|
|
|
|
//设置导航
|
|
|
private static function setListNav()
|
|
|
{
|
|
|
$options = self::$options;
|
|
|
$cookieChannel = isset($_COOKIE['_Channel']) ? $_COOKIE['_Channel'] : 'boys';
|
|
|
if (isset($options['brandName']) && !empty($options['brandName'])) {
|
|
|
$initNav = $options['brandName'];
|
|
|
}else{
|
|
|
$initNav = '列表';
|
|
|
}
|
|
|
self::$listNav[0] = array(
|
|
|
'href' => '',
|
|
|
'name' => $cookieChannel
|
|
|
);
|
|
|
self::$listNav[1] = array(
|
|
|
'href' => '',
|
|
|
'name' => $initNav
|
|
|
);
|
|
|
}
|
|
|
/**
|
|
|
* 组织搜索模板数据
|
|
|
* @param array $data
|
|
|
* @param array $options
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function getList($data = array() , $options = array())
|
|
|
{
|
|
|
$result = array();
|
|
|
self::$params = $_GET;
|
|
|
self::$options = $options;
|
|
|
unset(self::$params['/']);
|
|
|
unset(self::$params['page']);
|
|
|
self::$filter = $data['product']['filter'];
|
|
|
//产品列表
|
|
|
$result['goods'] = self::getProductList($data['product']['product_list'], $options['imgSize']);
|
|
|
//总页数
|
|
|
$result['page_total'] = $data['product']['page_total'];
|
|
|
self::$pageTotal = $data['product']['page_total'];
|
|
|
//当前页
|
|
|
$result['page'] = $data['product']['page'];
|
|
|
self::$page = $result['page'];
|
|
|
//筛选条件
|
|
|
$result['filters'] = self::filter();
|
|
|
//排序方式、显示数量等其他选项
|
|
|
$result['opts'] = self::getOpts();
|
|
|
//下一页
|
|
|
$result['hasNextPage'] = self::next($data['product']['page_total']);
|
|
|
//全部折扣
|
|
|
$result['leftContent'][]['allDiscount'] = isset($data['discount']) ? self::getDiscount($data['discount']['discount']) : array();
|
|
|
//分类条件
|
|
|
$result['filters']['sort'] = isset($data['sort']) ? self::searchSort($data['sort']['sort']) : array();
|
|
|
//左侧分类分类
|
|
|
$result['leftContent'][]['allSort'] = isset($data['sort']) ? self::groupSort($data['sort']['sort']) : array();
|
|
|
//一周新品上架
|
|
|
$result['leftContent'][]['newSales'] = isset($data['recent']) ? self::recentShelve($data['recent']['recent']) : array();
|
|
|
//品牌banner
|
|
|
$result['brandBanner'] = isset($data['brand']) ? self::getBannerFormat($data['brand'], $options['brandBanner']) : array();
|
|
|
//总记录数
|
|
|
$result['totalCount'] = $data['product']['total'];
|
|
|
//品牌店铺信息
|
|
|
$result['shopEntry'] = isset($data['shop']) && !empty($data['shop']) ? self::shop($data['shop'], $data['sort']['sort']) : array();
|
|
|
//分页
|
|
|
$result['pager'] = self::pager($result['totalCount'],$options['viewNum']-1);
|
|
|
//浏览记录
|
|
|
if (isset($options['reviewNum']) && !empty($options['reviewNum'])) {
|
|
|
$result['latestWalk'] = $options['reviewNum'];
|
|
|
}
|
|
|
//选中条件
|
|
|
$result['filters']['checkedConditions'] = self::getSelected();
|
|
|
if (isset($options['controller']) && $options['controller'] == 'Search') {
|
|
|
self::setSearchNav($data['product']['total']);
|
|
|
}
|
|
|
if (empty($result['goods'])) {
|
|
|
$result['filters'] = array();
|
|
|
$result['opts'] = array();
|
|
|
}
|
|
|
$result['pathNav'] = isset($options['controller']) && $options['controller'] == 'Sale' ? array() : self::$listNav;
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* TODO 组织商品列表信息
|
|
|
* @param $product 接口返回商品列表
|
|
|
* @author sefon 2015-12-21 17:24:04
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function getProductList($product,$imgSize)
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
$goods = array();
|
|
|
foreach($product as $key => $val){
|
|
|
//NEW
|
|
|
$isNew = $val['is_new'] == 'Y' ? true : false;
|
|
|
//限量商品
|
|
|
$isLimit = isset($val['is_limited']) && $val['is_limited'] === 'Y';
|
|
|
//即将售罄
|
|
|
$isFew = $val['is_soon_sold_out'] === 'Y' ? true : false;
|
|
|
//SALE
|
|
|
//新品节
|
|
|
//再到着
|
|
|
//年终大促
|
|
|
// 年中大促
|
|
|
foreach($val['goods_list'] as $k => $v){
|
|
|
$goods_list[$k]['url'] = Helpers::getUrlBySkc($val['product_id'], $v['goods_id'], $val['cn_alphabet']);
|
|
|
//筛选符合颜色条件的封面图片
|
|
|
if (isset($params['color']) && $params['color'] == $v['color_id']) {
|
|
|
$val['default_images'] = Images::getImageUrl($v['images_url'],$imgSize[0],$imgSize[1]);
|
|
|
}
|
|
|
}
|
|
|
if (!empty($val['default_images'])) {
|
|
|
$val['default_images'] = Images::getImageUrl($val['default_images'],$imgSize[0],$imgSize[1]);
|
|
|
}
|
|
|
$good = array(
|
|
|
'tags' => array(
|
|
|
'isNew' => $isNew,
|
|
|
'isLimit' => $isLimit
|
|
|
),
|
|
|
'url' => $goods_list[0]['url'],
|
|
|
'thumb' => $val['default_images'],
|
|
|
'name' => $val['product_name'],
|
|
|
'salePrice' => $val['sales_price'],
|
|
|
'isFew' => $isFew,
|
|
|
'skn' => $val['product_skn'],
|
|
|
'showColBtn' => true,
|
|
|
'coled' => true
|
|
|
);
|
|
|
//市场价不等于售价时显示
|
|
|
if ($val['market_price'] != $val['sales_price']) {
|
|
|
$good['marketPrice'] = $val['market_price'];
|
|
|
}
|
|
|
$goods[] = $good;
|
|
|
}
|
|
|
return $goods;
|
|
|
}
|
|
|
/**
|
|
|
* 版型等其它筛选项
|
|
|
* @param $filter
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function standard($filter)
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
$result = array();
|
|
|
foreach ($filter as $key => $val) {
|
|
|
if (substr_compare($key, 'parameter', 0, 9) != 0) {
|
|
|
continue;
|
|
|
}
|
|
|
if (!isset($val['sub']) || empty($val['sub'])) {
|
|
|
continue;
|
|
|
}
|
|
|
$sub = array();
|
|
|
foreach ($val['sub'] as $pval) {
|
|
|
if (isset(self::$params['parameter_' . $val['standard_id']]) && self::$params['parameter_' . $val['standard_id']] == $pval['standard_id']) {
|
|
|
$tmpParams = self::$params;
|
|
|
unset($tmpParams['parameter_' . $val['standard_id']]);
|
|
|
self::$selected['parameter_' . $val['standard_id']] = array(
|
|
|
'name' => $pval['standard_name'],
|
|
|
'href' => self::buildUrl($tmpParams)
|
|
|
);
|
|
|
if (self::checkSearch('parameter_' . $val['standard_id'])) {
|
|
|
return array();
|
|
|
}
|
|
|
}
|
|
|
$sub[] = array(
|
|
|
'name' => $pval['standard_name'],
|
|
|
'href' => self::buildUrl(array_merge($params, array(
|
|
|
'parameter_' . $val['standard_id'] => $pval['standard_id']
|
|
|
))) ,
|
|
|
'checked' => isset(self::$params['parameter_' . $val['standard_id']]) && self::$params['parameter_' . $val['standard_id']] == $pval['standard_id'] ? true : false
|
|
|
);
|
|
|
}
|
|
|
if (!empty($sub) && count($sub) > 1) {
|
|
|
$result[] = array(
|
|
|
'name' => $val['standard_name'],
|
|
|
'sub' => $sub
|
|
|
);
|
|
|
}
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 性别
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function gender($filter)
|
|
|
{
|
|
|
if (empty($filter) || !isset($filter['gender']) || empty($filter['gender'])) {
|
|
|
return array();
|
|
|
}
|
|
|
$params = self::$params;
|
|
|
$gender = isset($params['gender']) ? $params['gender'] : '';
|
|
|
if (isset($params['gender'])) {
|
|
|
unset($params['gender']);
|
|
|
}
|
|
|
//设置选中
|
|
|
if ($gender == '1,3' || $gender == '2,3') {
|
|
|
self::$selected['gender'] = array(
|
|
|
'name' => $gender == '1,3' ? 'BOYS' : 'GIRLS',
|
|
|
'href' => self::buildUrl($params)
|
|
|
);
|
|
|
}
|
|
|
|
|
|
if (self::checkSearch('gender')) {
|
|
|
return array();
|
|
|
}
|
|
|
$result = array();
|
|
|
foreach ($filter['gender'] as $key => $val) {
|
|
|
$result[] = array(
|
|
|
'name' => $val,
|
|
|
'href' => self::buildUrl(array_merge($params, array(
|
|
|
'gender' => $key,
|
|
|
))) ,
|
|
|
'checked' => isset(self::$params['gender']) && self::$params['gender'] == $key ? true : false
|
|
|
);
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 组织搜索列表页面的左侧分类
|
|
|
* @param array $sort
|
|
|
* @return array
|
|
|
*/
|
|
|
|
|
|
public static function groupSort($sort)
|
|
|
{
|
|
|
$options = self::$options;
|
|
|
if (isset($options['controller']) && $options['controller'] == 'Search') {
|
|
|
return array();
|
|
|
}
|
|
|
//设置导航
|
|
|
self::setListNav($options);
|
|
|
$params = self::$params;
|
|
|
$result = array(
|
|
|
'all' => array(
|
|
|
'name' => '全部品类',
|
|
|
'href' => self::buildUrl() ,
|
|
|
'active' => isset($params['msort']) ? false : true,
|
|
|
) ,
|
|
|
'list' => array()
|
|
|
);
|
|
|
$sortList = array();
|
|
|
foreach ($sort as $key => $val) {
|
|
|
//若参数有分类,设置导航
|
|
|
if (isset($params['msort']) && $params['msort'] == $val['sort_id']) {
|
|
|
//是否有品牌
|
|
|
$navIndex = isset($option['brandName']) && $option['brandName'] ? 2 : 1;
|
|
|
self::$listNav[$navIndex] = array(
|
|
|
'name' => $val['sort_name'],
|
|
|
'href' => self::buildUrl(array(
|
|
|
'msort' => $val['sort_id'],
|
|
|
))
|
|
|
);
|
|
|
}
|
|
|
unset($params['msort']);
|
|
|
unset($params['misort']);
|
|
|
$sortList[$key]['name'] = $val['sort_name'];
|
|
|
$sortList[$key]['active'] = isset(self::$params['msort']) && self::$params['msort'] == $val['sort_id'] ? true : false;
|
|
|
$sortList[$key]['childList'][] = array(
|
|
|
'name' => '全部分类',
|
|
|
'href' => self::buildUrl(array_merge($params, array('msort'=>$val['sort_id'])))
|
|
|
);
|
|
|
if (isset($val['sub']) && !empty($val['sub'])) {
|
|
|
foreach ($val['sub'] as $k => $v) {
|
|
|
$sortList[$key]['childList'][$k+1]['name'] = $v['sort_name'];
|
|
|
$sortList[$key]['childList'][$k+1]['href'] = self::buildUrl(array_merge($params, array('msort' => $val['sort_id'], 'misort' => $v['sort_id'])));
|
|
|
$sortList[$key]['childList'][$k+1]['childActive'] = isset(self::$params['misort']) && self::$params['misort'] == $v['sort_id'] ? true : false;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
$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_merge($params,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['msort']);
|
|
|
unset($params['misort']);
|
|
|
self::$selected['sort'] = array(
|
|
|
'name' => $v['sort_name'],
|
|
|
'href' => self::buildUrl($params)
|
|
|
);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if (self::checkSearch('msrot') || self::checkSearch('misort')) {
|
|
|
return array();
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
/**
|
|
|
* 品牌,可以多选
|
|
|
* @param array $filter
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function brand($filter)
|
|
|
{
|
|
|
$options = self::$options;
|
|
|
//品牌列表返回空
|
|
|
if (isset($options['brandName'])) {
|
|
|
return array();
|
|
|
}
|
|
|
$result = array(
|
|
|
'default' => array() ,
|
|
|
'brandIndex' => array(
|
|
|
array(
|
|
|
'index' => 'all',
|
|
|
'name' => '全部'
|
|
|
)
|
|
|
),
|
|
|
'brandsShow' => array()
|
|
|
);
|
|
|
$params = self::$params;
|
|
|
//url中的品牌ids
|
|
|
$brandIds = isset($params['brand']) && !empty($params['brand']) ? explode(',', $params['brand']) : array();
|
|
|
if (isset($filter['brand']) && !empty($filter['brand'])) {
|
|
|
$brand = $filter['brand'];
|
|
|
// print_r($filter); exit;
|
|
|
//已选中品牌数量
|
|
|
$existBrandNum = 0;
|
|
|
//已选中品牌标签名
|
|
|
$existName = '';
|
|
|
foreach ($brand as $key => $v) {
|
|
|
$selectBrandIds = $brandIds;
|
|
|
//品牌已被选中
|
|
|
if (in_array($v['id'], $brandIds)) {
|
|
|
$filterKey = array_search($v['id'], $selectBrandIds);
|
|
|
unset($selectBrandIds[$filterKey]);
|
|
|
$url = self::buildUrl(array_merge($params, array(
|
|
|
'brand' => implode(',', $selectBrandIds)
|
|
|
)));
|
|
|
if ($existBrandNum === 0) {
|
|
|
$existName .= $v['brand_name'].'、';
|
|
|
}
|
|
|
if ($existBrandNum === 1){
|
|
|
$existName .= substr($v['brand_name'], 0, 3).'...';
|
|
|
}
|
|
|
$existBrandNum++;
|
|
|
}
|
|
|
//该品牌未被选中
|
|
|
else {
|
|
|
$selectBrandIds[] = $v['id'];
|
|
|
$url = self::buildUrl(array_merge($params, array(
|
|
|
'brand' => implode(',', $selectBrandIds)
|
|
|
)));
|
|
|
}
|
|
|
$this_brand = array(
|
|
|
'id' => $v['id'],
|
|
|
'href' => $url,
|
|
|
'name' => $v['brand_name'],
|
|
|
'key' => strtolower($v['brand_name']),
|
|
|
'checked' => 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;
|
|
|
}
|
|
|
//品牌列表
|
|
|
$brandList[$v['brand_alif']][] = $this_brand;
|
|
|
$brandAll[$v['id']] = $v['brand_name'];
|
|
|
}
|
|
|
//清空品牌参数
|
|
|
unset($params['brand']);
|
|
|
//设置选中
|
|
|
if (isset(self::$params['brand']) && !empty(self::$params['brand'])) {
|
|
|
self::$selected['brand'] = array(
|
|
|
'name' => rtrim($existName, '、'),
|
|
|
'href' => self::buildUrl($params)
|
|
|
);
|
|
|
}
|
|
|
ksort($brandList);
|
|
|
//品牌列表排序, 添加品牌索引
|
|
|
$index_key = array();
|
|
|
foreach ($brandList as $key => $val) {
|
|
|
if ($key && !in_array($key, $index_key) && !is_numeric($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;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
unset($brandList);
|
|
|
}
|
|
|
//搜索页已选中,返回空
|
|
|
if (self::checkSearch('brand')) {
|
|
|
return array();
|
|
|
}
|
|
|
//品牌数量小于等于10,隐藏更多按钮
|
|
|
if (count($result['brandsShow']) < 11) {
|
|
|
$result['hideMore'] = true;
|
|
|
}
|
|
|
// print_r($result); exit;
|
|
|
return $result;
|
|
|
}
|
|
|
/**
|
|
|
* 尺码的链接,不能多选
|
|
|
* @param array $filter
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function size($filter, $isAjax = false)
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
$paramsValue = array_filter($params);
|
|
|
$sizeId = isset($params['size']) && !empty($params['size']) ? $params['size'] : '';
|
|
|
if (isset($params['size'])) {
|
|
|
unset($params['size']);
|
|
|
}
|
|
|
$result = array();
|
|
|
if (!$isAjax && empty($paramsValue)) {
|
|
|
return array();
|
|
|
}
|
|
|
if (isset($filter['size']) && !empty($filter['size'])) {
|
|
|
$size = $filter['size'];
|
|
|
foreach ($size as $k=> $v) {
|
|
|
//设置选中
|
|
|
if ($v['size_id'] == $sizeId) {
|
|
|
self::$selected['size'] = array(
|
|
|
'name' => $v['size_name'],
|
|
|
'href' => self::buildUrl($params)
|
|
|
);
|
|
|
}
|
|
|
$result[] = array(
|
|
|
'name' => $v['size_name'],
|
|
|
'href' => self::buildUrl(array_merge($params, array(
|
|
|
'size' => $v['size_id']
|
|
|
))) ,
|
|
|
'checked' => isset(self::$params['size']) && self::$params['size'] == $v['size_id'] ? true : false
|
|
|
);
|
|
|
}
|
|
|
if ( self::checkSearch('size')) {
|
|
|
return array();
|
|
|
}
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 颜色,不能多选
|
|
|
* @param array $filter
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function color($filter)
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
$colorId = isset($params['color']) && !empty(self::$params['color']) ? self::$params['color'] : '';
|
|
|
if (isset($params['color'])) {
|
|
|
unset($params['color']);
|
|
|
}
|
|
|
$result = array();
|
|
|
$color = $filter['color'];
|
|
|
foreach ($color as $v) {
|
|
|
//设置已选中
|
|
|
if ($v['color_id'] == $colorId) {
|
|
|
$background = empty($v['color_value']) ? '#' . $v['color_code'] : "url(" . $v['color_value'] . ")";
|
|
|
self::$selected['color'] = array(
|
|
|
'color' => $background,
|
|
|
'href' => self::buildUrl($params)
|
|
|
);
|
|
|
}
|
|
|
$result[] = array(
|
|
|
'name' => $v['color_name'],
|
|
|
'rgb' => empty($v['color_value']) ? '#' . $v['color_code'] : "url({$v['color_value']})",
|
|
|
'href' => self::buildUrl(array_merge($params, array(
|
|
|
'color' => $v['color_id']
|
|
|
))) ,
|
|
|
);
|
|
|
}
|
|
|
if (self::checkSearch('color')) {
|
|
|
return array();
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取价格,不能多选
|
|
|
* @param array $filter
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function price($filter)
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
$priceId = isset($params['price']) && !empty(self::$params['price']) ? self::$params['price'] : '';
|
|
|
if (isset($params['price'])) {
|
|
|
unset($params['price']);
|
|
|
}
|
|
|
$result = array();
|
|
|
//设置已选中价格
|
|
|
if (!empty($priceId) && isset($filter['price'][$priceId])) {
|
|
|
self::$selected['price'] = array(
|
|
|
'name' => $filter['price'][$priceId],
|
|
|
'href' => self::buildUrl($params)
|
|
|
);
|
|
|
}else{
|
|
|
$price = explode(',', $priceId);
|
|
|
if (count($price) == 2) {
|
|
|
if (!$price[0]) {
|
|
|
$price[0] = 0;
|
|
|
}
|
|
|
if (!$price[1]) {
|
|
|
$price[1] = 99999;
|
|
|
}
|
|
|
self::$selected['price'] = array(
|
|
|
'name' => self::$params['price'] == '2000,99999' ? '¥2000以上' : '¥' . (int)$price[0] . '-' . (int)$price[1],
|
|
|
'href' => self::buildurl($params)
|
|
|
);
|
|
|
}
|
|
|
}
|
|
|
if (self::checkSearch('price')) {
|
|
|
return array();
|
|
|
}
|
|
|
//返回价格条件
|
|
|
foreach ($filter['price'] as $key => $val) {
|
|
|
$val = trim($val,'¥');
|
|
|
$result[] = array(
|
|
|
'name' => $val,
|
|
|
'href' => self::buildUrl(array_merge($params, array(
|
|
|
'price' => $key
|
|
|
))) ,
|
|
|
'checked' => isset(self::$params['price']) && self::$params['price'] == $key ? true : false
|
|
|
);
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取自定义价格要提交的地址
|
|
|
*/
|
|
|
public static function customPrice($filter)
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
$result = array(
|
|
|
'min' => '',
|
|
|
'max' => ''
|
|
|
);
|
|
|
$priceId = isset($params['price']) && !empty(self::$params['price']) ? self::$params['price'] : '';
|
|
|
if (isset($params['price']) && !isset($filter['price'][$priceId]) ) {
|
|
|
$price = explode(',', $params['price']);
|
|
|
unset($params['price']);
|
|
|
if (!$price[0]) {
|
|
|
$price[0] = 0;
|
|
|
}
|
|
|
if (!$price[1]) {
|
|
|
$price[1] = 99999;
|
|
|
}
|
|
|
$result = array(
|
|
|
'min' => $price[0],
|
|
|
'max' => $price[1]
|
|
|
);
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 风格,可以多选
|
|
|
* @param array $filter
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function style($filter)
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
$styleIds = isset($params['style']) && !empty($params['style']) ? explode(',', $params['style']) : array();
|
|
|
if (isset($params['style'])) {
|
|
|
unset($params['style']);
|
|
|
}
|
|
|
$result = array();
|
|
|
$style = $filter['style'];
|
|
|
$styleNum = 0;
|
|
|
$styleName = '';
|
|
|
foreach ($style as $v) {
|
|
|
//选中的筛选条件
|
|
|
if (in_array($v['style_id'], $styleIds)) {
|
|
|
if (!$styleNum) {
|
|
|
$styleName = $v['style_name']."、";
|
|
|
}
|
|
|
elseif ($styleNum ===1){
|
|
|
$styleName .= substr($v['style_name'], 0, 3).'...';
|
|
|
}
|
|
|
$styleNum ++;
|
|
|
}
|
|
|
$selectedStyle = isset(self::$params['style']) && !empty(self::$params['style']) ? explode(',', self::$params['style']) : array();
|
|
|
//风格id在提交的参数中,构造url参数去除该风格id
|
|
|
if (in_array($v['style_id'], $selectedStyle)) {
|
|
|
$filterKey = array_search($v['style_id'], $selectedStyle);
|
|
|
unset($selectedStyle[$filterKey]);
|
|
|
$url = self::buildUrl(array_merge($params, array(
|
|
|
'style' => implode(',', $selectedStyle)
|
|
|
)));
|
|
|
}
|
|
|
//该风格url参数中添加该风格的id
|
|
|
else {
|
|
|
$selectedStyle[] = $v['style_id'];
|
|
|
$url = self::buildUrl(array_merge($params, array(
|
|
|
'style' => implode(',', $selectedStyle)
|
|
|
)));
|
|
|
}
|
|
|
$result[] = array(
|
|
|
'id' => $v['style_id'],
|
|
|
'name' => $v['style_name'],
|
|
|
'href' => $url,
|
|
|
);
|
|
|
}
|
|
|
if (isset(self::$params['style']) && !empty(self::$params['style'])) {
|
|
|
self::$selected['style'] = array(
|
|
|
'name' => rtrim($styleName, '、'),
|
|
|
'href' => self::buildUrl($params)
|
|
|
);
|
|
|
}
|
|
|
$data[0] = array(
|
|
|
'attr' => 'style',
|
|
|
'name' => '风格',
|
|
|
'showMulti' => true,
|
|
|
'sub' => $result
|
|
|
);
|
|
|
return $data;
|
|
|
}
|
|
|
/**
|
|
|
* 高级选项
|
|
|
*/
|
|
|
public static function seniorChose($filter)
|
|
|
{
|
|
|
$style = self::style($filter);
|
|
|
$other = self::standard($filter);
|
|
|
$result = array_merge($style,$other);
|
|
|
//搜索页已选中,返回空
|
|
|
if (self::checkSearch('style') || self::checkSearch('parameter')) {
|
|
|
return array();
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 每页显示数量
|
|
|
*/
|
|
|
public static function viewNum()
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
$viewNum = array(60, 100, 200);
|
|
|
$result = array();
|
|
|
foreach ($viewNum as $value) {
|
|
|
$params['viewNum'] = $value;
|
|
|
$params['page'] = 1;
|
|
|
$result[] = array(
|
|
|
'count' => $value,
|
|
|
'href' => self::buildUrl($params)
|
|
|
);
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 显示行数
|
|
|
*/
|
|
|
public static function rowNum($num = 5)
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
$params['rowNum'] = $num;
|
|
|
return self::buildUrl($params);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 是否特价
|
|
|
*/
|
|
|
public static function specialoffer()
|
|
|
{
|
|
|
$selected = '';
|
|
|
$params = self::$params;
|
|
|
if (isset($params['specialoffer']) && !empty($params['specialoffer'])) {
|
|
|
unset($params['specialoffer']);
|
|
|
$selected = true;
|
|
|
}
|
|
|
else {
|
|
|
$params['specialoffer'] = 'Y';
|
|
|
}
|
|
|
return array(
|
|
|
'name' => '打折',
|
|
|
'href' => self::buildUrl($params) ,
|
|
|
'checked' => $selected
|
|
|
);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 是否限量
|
|
|
*/
|
|
|
public static function limited()
|
|
|
{
|
|
|
$selected = '';
|
|
|
$params = self::$params;
|
|
|
if (isset($params['limited']) && !empty($params['limited'])) {
|
|
|
unset($params['limited']);
|
|
|
$selected = true;
|
|
|
}
|
|
|
else {
|
|
|
$params['limited'] = 'Y';
|
|
|
}
|
|
|
return array(
|
|
|
'name' => '限量',
|
|
|
'href' => self::buildUrl($params) ,
|
|
|
'checked' => $selected
|
|
|
);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 是否新品
|
|
|
*/
|
|
|
public static function isnew()
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
$selected = '';
|
|
|
if (isset($params['new']) && !empty($params['new'])) {
|
|
|
unset($params['new']);
|
|
|
$selected = true;
|
|
|
}
|
|
|
else {
|
|
|
$params['new'] = 'Y';
|
|
|
}
|
|
|
return array(
|
|
|
'name' => '新品',
|
|
|
'href' => self::buildUrl($params) ,
|
|
|
'checked' => $selected
|
|
|
);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 排序是否最新
|
|
|
*/
|
|
|
public static function orderTime()
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
if (isset($params['order'])) {
|
|
|
unset($params['order']);
|
|
|
}
|
|
|
$result = array(
|
|
|
'name' => '最新',
|
|
|
'href' => isset(self::$params['order']) && self::$params['order'] == 's_t_desc' ? self::buildUrl($params) : self::buildUrl(array_merge($params, array(
|
|
|
'order' => 's_t_asc'
|
|
|
))) ,
|
|
|
'active' => isset(self::$params['order']) && self::$params['order'] == 's_t_asc' ? true : ''
|
|
|
);
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 排序是否默认
|
|
|
*/
|
|
|
public static function orderDefault()
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
if (isset($params['order'])) {
|
|
|
unset($params['order']);
|
|
|
}
|
|
|
$result = array(
|
|
|
'name' => '默认',
|
|
|
'href' => self::buildUrl($params) ,
|
|
|
'active' => !isset(self::$params['order']) || empty(self::$params['order']) ? true : ''
|
|
|
);
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 价格排序
|
|
|
*/
|
|
|
public static function orderPrice()
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
if (isset($params['order'])) {
|
|
|
unset($params['order']);
|
|
|
}
|
|
|
if (!isset(self::$params['order']) || empty(self::$params['order']) || !in_array(self::$params['order'], array(
|
|
|
's_p_asc',
|
|
|
's_p_desc'
|
|
|
))) {
|
|
|
$url = self::buildUrl(array_merge($params, array(
|
|
|
'order' => 's_p_asc'
|
|
|
)));
|
|
|
$active = '';
|
|
|
$desc = '';
|
|
|
}
|
|
|
else if (self::$params['order'] == 's_p_asc') {
|
|
|
$url = self::buildUrl(array_merge($params, array(
|
|
|
'order' => 's_p_desc'
|
|
|
)));
|
|
|
$active = true;
|
|
|
$desc = true;
|
|
|
|
|
|
}
|
|
|
else {
|
|
|
$url = self::buildUrl(array_merge($params, array(
|
|
|
'order' => 's_p_asc'
|
|
|
)));
|
|
|
$active = true;
|
|
|
$desc = false;
|
|
|
}
|
|
|
$result = array(
|
|
|
'name' => '价格',
|
|
|
'href' => $url,
|
|
|
'hasSortOrient' => true,
|
|
|
'active' => $active,
|
|
|
'desc' => $desc
|
|
|
);
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 折扣排序
|
|
|
*/
|
|
|
public static function orderDiscount()
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
if (isset($params['order'])) {
|
|
|
unset($params['order']);
|
|
|
}
|
|
|
if (!isset(self::$params['order']) || empty(self::$params['order']) || !in_array(self::$params['order'], array(
|
|
|
'p_d_asc',
|
|
|
'p_d_desc'
|
|
|
))) {
|
|
|
$url = self::buildUrl(array_merge($params, array(
|
|
|
'order' => 'p_d_asc'
|
|
|
)));
|
|
|
$active = '';
|
|
|
$desc = true;
|
|
|
}
|
|
|
else if (self::$params['order'] == 'p_d_asc') {
|
|
|
$url = self::buildUrl(array_merge($params, array(
|
|
|
'order' => 'p_d_desc'
|
|
|
)));
|
|
|
$desc = true;
|
|
|
$active = true;
|
|
|
}
|
|
|
else {
|
|
|
$url = self::buildUrl(array_merge($params, array(
|
|
|
'order' => 'p_d_asc'
|
|
|
)));
|
|
|
$desc = false;
|
|
|
$active = true;
|
|
|
}
|
|
|
$result = array(
|
|
|
'name' => '折扣',
|
|
|
'href' => $url,
|
|
|
'hasSortOrient' => true,
|
|
|
'active' => $active,
|
|
|
'desc' => $desc,
|
|
|
);
|
|
|
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 组织参数
|
|
|
* @param array $params
|
|
|
* @return string
|
|
|
*/
|
|
|
private static function buildUrl($params = array())
|
|
|
{
|
|
|
if (empty($params)) {
|
|
|
return self::current();
|
|
|
}
|
|
|
$queryPath = explode('?', $_SERVER['REQUEST_URI']);
|
|
|
$params_arr = array();
|
|
|
foreach ($params as $key => $val) {
|
|
|
if (is_array($val) || $val === '') {
|
|
|
continue;
|
|
|
}
|
|
|
$params_arr[] = $key . '=' . $val;
|
|
|
}
|
|
|
if (empty($params_arr)) {
|
|
|
return self::current();
|
|
|
}
|
|
|
else {
|
|
|
return (empty($queryPath[0]) ? '/' : $queryPath[0]) . '?' . implode('&', $params_arr);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取选中的条件
|
|
|
*/
|
|
|
public static function getSelected()
|
|
|
{
|
|
|
$result = array();
|
|
|
$data = array();
|
|
|
foreach (self::$selected as $key => $val) {
|
|
|
$data[] = $val;
|
|
|
}
|
|
|
if ($data) {
|
|
|
$result['conditions'] = $data;
|
|
|
$result['clearUrl'] = self::current();
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 打折区间
|
|
|
* @param array $list
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function getDiscount(array $list = array())
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
if (empty($list)) {
|
|
|
return array();
|
|
|
}
|
|
|
$query = array();
|
|
|
$total = 0;
|
|
|
foreach ($list as $k => $v) {
|
|
|
$total += $v['count'];
|
|
|
$query['p_d'] = $k;
|
|
|
$list[$k]['href'] = self::buildUrl($query);
|
|
|
$list[$k]['active'] = isset($params['p_d']) && $params['p_d'] == $k ? true : false;
|
|
|
}
|
|
|
$result = array(
|
|
|
'list' => array_values($list)
|
|
|
);
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 最新上架
|
|
|
*/
|
|
|
public static function recentShelve($list = array())
|
|
|
{
|
|
|
if (empty($list)) {
|
|
|
return array();
|
|
|
}
|
|
|
$params = self::$params;
|
|
|
$query = array();
|
|
|
$data = array();
|
|
|
$i = 0;
|
|
|
foreach ($list as $k => $v) {
|
|
|
$star_time = strtotime($k);
|
|
|
$end_time = $star_time+60*60*24;
|
|
|
$query['shelve_time'] = '';
|
|
|
$query['shelve_time'] = $star_time.','.$end_time;
|
|
|
if (isset($params['shelve_time']) && $query['shelve_time'] == $params['shelve_time']) {
|
|
|
$data[$i]['active'] = true;
|
|
|
}
|
|
|
$data[$i]['href'] = self::buildUrl($query);
|
|
|
$data[$i]['name'] = $k;
|
|
|
$i++;
|
|
|
}
|
|
|
$result = array(
|
|
|
//'updateNum' => $total,
|
|
|
'list' => $data
|
|
|
);
|
|
|
unset($data);
|
|
|
unset($query);
|
|
|
return $result;
|
|
|
}
|
|
|
/**
|
|
|
* 当前页地址
|
|
|
*/
|
|
|
public static function current()
|
|
|
{
|
|
|
$url = explode('?', 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
|
|
|
self::$listNav[0]['href'] = $url[0];
|
|
|
return $url[0];
|
|
|
}
|
|
|
/**
|
|
|
* 下一页
|
|
|
*/
|
|
|
public static function next($total)
|
|
|
{
|
|
|
$param = self::$params;
|
|
|
$page = self::$page;
|
|
|
$next = array();
|
|
|
if ($page < $total) {
|
|
|
$page ++;
|
|
|
$param['page'] = $page;
|
|
|
$nextUrl = self::buildUrl($param);
|
|
|
$next = array(
|
|
|
'href' => $nextUrl,
|
|
|
'src' => 'http://img10.static.yhbimg.com/product/2014/01/15/11/01fa01614784f6239760f1b749663016f1.jpg?imageMogr2/thumbnail/235x314/extent/235x314/background/d2hpdGU=/position/center/quality/90'
|
|
|
);
|
|
|
}
|
|
|
return $next;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 组织产品的图片
|
|
|
* @param $product
|
|
|
* @param $options
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function getProductPic($product, $options)
|
|
|
{
|
|
|
$result = array();
|
|
|
if (isset($product[0]['goods_list']) && !empty($product[0]['goods_list'])){
|
|
|
foreach ($product[0]['goods_list'] as $key => $val){
|
|
|
$result[$key]['coverImg'] = Images::getImageUrl($val['images_url'], $options['imgSize'][0], $options['imgSize'][1]);
|
|
|
$result[$key]['url'] = Helpers::getUrlBySkc($product[0]['product_id'], $val['goods_id'], $product[0]['cn_alphabet']);
|
|
|
$result[$key]['src'] = Images::getImageUrl($val['images_url'], $options['imgSize'][0], $options['imgSize'][1]);
|
|
|
}
|
|
|
}
|
|
|
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);
|
|
|
}
|
|
|
|
|
|
//组织静态资源数据格式
|
|
|
public static function formatNodeContent($code)
|
|
|
{
|
|
|
$nodeContent = BrandData::getByNodeContent($code);
|
|
|
if (isset($nodeContent['code']) && $nodeContent['code'] === 200) {
|
|
|
$result = array();
|
|
|
|
|
|
$string = $nodeContent['data'];
|
|
|
$hrefPatten="/<a href=[\'\"]?([^\'\" ]+).*?>/";
|
|
|
preg_match_all($hrefPatten, $string, $href);
|
|
|
|
|
|
$pattern = "/[img|IMG].*?src=['|\"](.*?(?:[.gif|.jpg]))['|\"].*?[\/]?>/";
|
|
|
preg_match_all($pattern,$string,$img);
|
|
|
|
|
|
foreach($href[1] as $key=>$vo){
|
|
|
$result[$key]['href'] = $vo;
|
|
|
$result[$key]['src'] = $img[1][$key];
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 组织品牌店铺信息
|
|
|
* @param $shop
|
|
|
* @param $shopSort
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function shop($shop, $shopSort)
|
|
|
{
|
|
|
$url = Helpers::url('','',$shop['brand_domain']);
|
|
|
$shopEntry = array();
|
|
|
$sort = array();
|
|
|
foreach ($shopSort 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::$options['controller']) && self::$options['controller'] == 'Search') {
|
|
|
foreach (self::$params as $key =>$val) {
|
|
|
if (strpos($key, $param) !== false) {
|
|
|
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' => '所有商品'
|
|
|
);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 并行调接口url获取(搜索产品数据)
|
|
|
* @param
|
|
|
*/
|
|
|
public static function getProductUrl($condition)
|
|
|
{
|
|
|
// 排序数据映射表
|
|
|
$orderMaps = array(
|
|
|
's_t_desc' => 'shelve_time:desc',
|
|
|
's_t_asc' => 'shelve_time:asc',
|
|
|
's_p_asc' => 'sales_price:asc',
|
|
|
's_p_desc' => 'sales_price:desc',
|
|
|
'p_d_desc' => 'discount:desc',
|
|
|
'p_d_asc' => 'discount:asc',
|
|
|
'skn_desc' => 'product_skn:desc',
|
|
|
'skn_asc' => 'product_skn:asc',
|
|
|
'activities_desc' => 'activities.order_by:desc',
|
|
|
'activities_asc' => 'activities.order_by:asc',
|
|
|
's_n_asc' => 'sales_num:asc',
|
|
|
's_n_desc' => 'sales_num:desc',
|
|
|
'activities_id_desc' => 'activities.activity_id:desc',
|
|
|
'activities_id_asc' => 'activities.activity_id:asc',
|
|
|
);
|
|
|
$param = array();
|
|
|
$param['status'] = 1; // 是否上架,1表示在架,2表示不在
|
|
|
$param['sales'] = 'Y'; // 只搜索销售的产品
|
|
|
$param['stocknumber'] = 1; // 过滤掉已售罄的商品
|
|
|
if (!isset($condition['order'])) {
|
|
|
$param['order'] = $orderMaps['s_t_desc'];
|
|
|
} else {
|
|
|
$param['order'] = $orderMaps[$condition['order']];
|
|
|
}
|
|
|
if (!isset($condition['page'])) {
|
|
|
$param['page'] = 1;
|
|
|
}
|
|
|
|
|
|
if(isset($condition['viewNum'])) {
|
|
|
$param['viewNum'] = $condition['viewNum'];
|
|
|
} else if (!isset($condition['limit'])) {
|
|
|
$param['viewNum'] = 60;
|
|
|
} else {
|
|
|
$param['viewNum'] = $condition['limit'];
|
|
|
unset($condition['limit']);
|
|
|
}
|
|
|
if (!empty($condition)) {
|
|
|
$param += $condition;
|
|
|
}
|
|
|
return Yohobuy::httpBuildQuery(SearchData::getUrl(), $param);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 并行调接口url获取(产品分类)
|
|
|
* @param
|
|
|
*/
|
|
|
|
|
|
public static function getClassesUrl($condition)
|
|
|
{
|
|
|
$condition['sales'] = 'Y'; //在销售商品分类
|
|
|
$condition['status'] = 1; //上架商品分类
|
|
|
$condition['stocknumber'] = 1; //过滤掉已售罄
|
|
|
return Yohobuy::httpBuildQuery(SearchData::getUrl('sort'), $condition);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 并行调接口url获取(获取折扣区间)
|
|
|
* @param
|
|
|
*/
|
|
|
|
|
|
public static function getDiscountUrl($param = array())
|
|
|
{
|
|
|
return Yohobuy::httpBuildQuery(SearchData::getUrl('discount'), $param);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 并行调接口url获取(获取最新上架)
|
|
|
*/
|
|
|
public static function getRecentShelveUrl($param = array())
|
|
|
{
|
|
|
return Yohobuy::httpBuildQuery(SearchData::getUrl('recent'), $param);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 并行调接口url获取(获取品牌数据)
|
|
|
*/
|
|
|
public static function getBrandUrl($customOptions = array())
|
|
|
{
|
|
|
// 构建必传参数
|
|
|
$param = Yohobuy::param();
|
|
|
$param['brand_id'] = $customOptions['brandId'];
|
|
|
$param['uid'] = $customOptions['uid'];
|
|
|
$param['method'] = 'app.brand.getBrandIntro';
|
|
|
$param['client_secret'] = Sign::getSign($param);
|
|
|
|
|
|
return Yohobuy::httpBuildQuery(Yohobuy::API_URL, $param);
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 获取品牌店铺接口地址
|
|
|
* @param $param
|
|
|
* @return string
|
|
|
*/
|
|
|
public static function getShopUrl($param)
|
|
|
{
|
|
|
return Yohobuy::httpBuildQuery(SearchData::getUrl('shop'), $param);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取品牌首页banner条
|
|
|
*
|
|
|
* @return array 品牌banner条数据
|
|
|
*/
|
|
|
public static function getBannerFormat($brand, $brandBanner)
|
|
|
{
|
|
|
// 根据品牌Id获取品牌banner图
|
|
|
$bannerImg = Helpers::getImageUrl($brandBanner, '', 150);
|
|
|
$brandHome = Helpers::url('/product/index/brand', '', $brand['brand_domain']);
|
|
|
$brandIntro = Helpers::url('/product/index/brandIntro', '', $brand['brand_domain']);
|
|
|
$is_favorite = false;
|
|
|
if(isset($brand['is_favorite'])){
|
|
|
// 获取是否收藏
|
|
|
if ($brand['is_favorite'] == 'Y') {
|
|
|
$is_favorite = true;
|
|
|
} elseif ($brand['is_favorite'] == 'N') {
|
|
|
$is_favorite = false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 返回banner数据
|
|
|
return array(
|
|
|
'bannerHeight' => '150',
|
|
|
'coled' => $is_favorite,
|
|
|
'banner' => $bannerImg,
|
|
|
'brandHome' => $brandHome,
|
|
|
'brandIntro' => $brandIntro
|
|
|
);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 搜索条件
|
|
|
*/
|
|
|
public static function filter()
|
|
|
{
|
|
|
$result = array();
|
|
|
//频道
|
|
|
$result['channel'] = array();
|
|
|
//性别
|
|
|
$result['gender'] = self::gender(self::$filter);
|
|
|
//品牌
|
|
|
$result['brand'] = self::brand(self::$filter);
|
|
|
//价格
|
|
|
$result['price'] = self::price(self::$filter);
|
|
|
$result['customPrice'] = self::customPrice(self::$filter);
|
|
|
//颜色
|
|
|
$result['color'] = self::color(self::$filter);
|
|
|
//尺寸
|
|
|
$result['size'] = self::size(self::$filter);
|
|
|
//高级选项
|
|
|
$result['seniorChose'] = self::seniorChose(self::$filter);
|
|
|
return $result;
|
|
|
}
|
|
|
/**
|
|
|
* 其他选项
|
|
|
*/
|
|
|
public static function getOpts()
|
|
|
{
|
|
|
//排序方式
|
|
|
$result['sortType'] = array( self::orderDefault(),self::orderTime(),self::orderPrice(),self::orderDiscount());
|
|
|
//特殊:新品、特价、限量
|
|
|
$result['checks'] = array(self::isnew(),self::specialoffer(),self::limited());
|
|
|
//每行显示5个产品
|
|
|
$result['fivePerLine'] = true;
|
|
|
//每行显示6个产品
|
|
|
$result['sixPerLineHref'] = true;
|
|
|
//每页显示的数量
|
|
|
$result['countPerPage'] = self::$options['viewNum'];
|
|
|
//可选每页显示数量
|
|
|
$result['pageCounts'] = self::viewNum();
|
|
|
$result['curPage'] = self::$page;
|
|
|
$result['pageCount'] = self::$pageTotal;
|
|
|
$result['nextHref'] = ($next = self::next(self::$pageTotal, self::$filter)) ? $next['href'] : '';
|
|
|
return $result;
|
|
|
}
|
|
|
} |
|
|
<?php
|
|
|
|
|
|
namespace WebPlugin;
|
|
|
|
|
|
use WebPlugin\Paging;
|
|
|
use LibModels\Web\Product\BrandData;
|
|
|
use LibModels\Web\Product\SearchData;
|
|
|
use Api\Yohobuy;
|
|
|
use Api\Sign;
|
|
|
/**
|
|
|
* 搜索辅助类
|
|
|
*/
|
|
|
class HelperSearch
|
|
|
{
|
|
|
//请求时用的所有参数
|
|
|
public static $params = array();
|
|
|
|
|
|
public static $options = array();
|
|
|
//当前页
|
|
|
public static $page = 1;
|
|
|
public static $pageTotal;
|
|
|
public static $filter;
|
|
|
|
|
|
//选中的条件
|
|
|
public static $selected = array();
|
|
|
|
|
|
//list分类面包屑
|
|
|
public static $listNav = array();
|
|
|
|
|
|
//设置导航
|
|
|
private static function setListNav()
|
|
|
{
|
|
|
$options = self::$options;
|
|
|
$cookieChannel = isset($_COOKIE['_Channel']) ? $_COOKIE['_Channel'] : 'boys';
|
|
|
if (isset($options['brandName']) && !empty($options['brandName'])) {
|
|
|
$initNav = $options['brandName'];
|
|
|
}else{
|
|
|
$initNav = '列表';
|
|
|
}
|
|
|
self::$listNav[0] = array(
|
|
|
'href' => '',
|
|
|
'name' => $cookieChannel
|
|
|
);
|
|
|
self::$listNav[1] = array(
|
|
|
'href' => '',
|
|
|
'name' => $initNav
|
|
|
);
|
|
|
}
|
|
|
/**
|
|
|
* 组织搜索模板数据
|
|
|
* @param array $data
|
|
|
* @param array $options
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function getList($data = array() , $options = array())
|
|
|
{
|
|
|
$result = array();
|
|
|
self::$params = $_GET;
|
|
|
self::$options = $options;
|
|
|
unset(self::$params['/']);
|
|
|
unset(self::$params['page']);
|
|
|
self::$filter = isset($data['product']['filter']) ? $data['product']['filter'] : array();
|
|
|
//产品列表
|
|
|
$result['goods'] = isset($data['product']['product_list']) ? self::getProductList($data['product']['product_list'], $options['imgSize']) : array();
|
|
|
//总页数
|
|
|
$result['page_total'] = isset($data['product']['page_total']) ? $data['product']['page_total'] : '';
|
|
|
self::$pageTotal = $result['page_total'];
|
|
|
//当前页
|
|
|
$result['page'] = isset($data['product']['page']) ? $data['product']['page'] : '';
|
|
|
self::$page = $result['page'];
|
|
|
//筛选条件
|
|
|
$result['filters'] = isset($data['product']['filter']) ? self::filter() : array();
|
|
|
//排序方式、显示数量等其他选项
|
|
|
$result['opts'] = isset($data['product']['filter']) ? self::getOpts() : array();
|
|
|
//下一页
|
|
|
if (isset($data['product']['page_total'])) {
|
|
|
$result['hasNextPage'] = self::next($data['product']['page_total']);
|
|
|
}
|
|
|
//全部折扣
|
|
|
if (isset($data['discount']['discount']) && !empty($data['discount']['discount'])) {
|
|
|
$result['leftContent'][]['allDiscount'] = self::getDiscount($data['discount']['discount']);
|
|
|
}
|
|
|
//分类条件(搜索页面)
|
|
|
if (isset($data['sort']['sort'])) {
|
|
|
//分类条件(搜索页面)
|
|
|
if (isset($options['controller']) && $options['controller'] != 'Search') {
|
|
|
$result['filters']['sort'] = self::searchSort($data['sort']['sort']);
|
|
|
}else{
|
|
|
//左侧分类分类
|
|
|
$result['leftContent'][]['allSort'] = self::groupSort($data['sort']['sort']);
|
|
|
}
|
|
|
}
|
|
|
//一周新品上架
|
|
|
if (isset($data['recent']['recent']) && !empty($data['recent']['recent'])) {
|
|
|
$result['leftContent'][]['newSales'] = self::recentShelve($data['recent']['recent']);
|
|
|
}
|
|
|
//品牌banner
|
|
|
$result['brandBanner'] = isset($data['brand']) ? self::getBannerFormat($data['brand'], $options['brandBanner']) : array();
|
|
|
//总记录数
|
|
|
$result['totalCount'] = $data['product']['total'];
|
|
|
//品牌店铺信息
|
|
|
if (isset($data['shop']) && !empty($data['shop'])) {
|
|
|
$result['shopEntry'] = self::shop($data['shop'], $data['sort']['sort']);
|
|
|
}
|
|
|
//分页
|
|
|
$result['pager'] = self::pager($result['totalCount'],$options['viewNum']-1);
|
|
|
//浏览记录
|
|
|
if (isset($options['reviewNum']) && !empty($options['reviewNum'])) {
|
|
|
$result['latestWalk'] = $options['reviewNum'];
|
|
|
}
|
|
|
//选中条件
|
|
|
$result['filters']['checkedConditions'] = self::getSelected();
|
|
|
if (isset($options['controller']) && $options['controller'] == 'Search') {
|
|
|
self::setSearchNav($data['product']['total']);
|
|
|
}
|
|
|
if (empty($result['goods'])) {
|
|
|
$result['filters'] = array();
|
|
|
$result['opts'] = array();
|
|
|
}
|
|
|
$result['pathNav'] = isset($options['controller']) && $options['controller'] == 'Sale' ? array() : self::$listNav;
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* TODO 组织商品列表信息
|
|
|
* @param $product 接口返回商品列表
|
|
|
* @author sefon 2015-12-21 17:24:04
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function getProductList($product,$imgSize)
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
$goods = array();
|
|
|
if (empty($product)) {
|
|
|
return $goods;
|
|
|
}
|
|
|
foreach($product as $key => $val){
|
|
|
//NEW
|
|
|
$isNew = $val['is_new'] == 'Y' ? true : false;
|
|
|
//限量商品
|
|
|
$isLimit = isset($val['is_limited']) && $val['is_limited'] === 'Y';
|
|
|
//即将售罄
|
|
|
$isFew = $val['is_soon_sold_out'] === 'Y' ? true : false;
|
|
|
//SALE
|
|
|
//新品节
|
|
|
//再到着
|
|
|
//年终大促
|
|
|
// 年中大促
|
|
|
foreach($val['goods_list'] as $k => $v){
|
|
|
$goods_list[$k]['url'] = Helpers::getUrlBySkc($val['product_id'], $v['goods_id'], $val['cn_alphabet']);
|
|
|
//筛选符合颜色条件的封面图片
|
|
|
if (isset($params['color']) && $params['color'] == $v['color_id']) {
|
|
|
$val['default_images'] = Images::getImageUrl($v['images_url'],$imgSize[0],$imgSize[1]);
|
|
|
}
|
|
|
}
|
|
|
if (!empty($val['default_images'])) {
|
|
|
$val['default_images'] = Images::getImageUrl($val['default_images'],$imgSize[0],$imgSize[1]);
|
|
|
}
|
|
|
$good = array(
|
|
|
'tags' => array(
|
|
|
'isNew' => $isNew,
|
|
|
'isLimit' => $isLimit
|
|
|
),
|
|
|
'url' => $goods_list[0]['url'],
|
|
|
'thumb' => $val['default_images'],
|
|
|
'name' => $val['product_name'],
|
|
|
'salePrice' => $val['sales_price'],
|
|
|
'isFew' => $isFew,
|
|
|
'skn' => $val['product_skn'],
|
|
|
'showColBtn' => true,
|
|
|
'coled' => true
|
|
|
);
|
|
|
//市场价不等于售价时显示
|
|
|
if ($val['market_price'] != $val['sales_price']) {
|
|
|
$good['marketPrice'] = $val['market_price'];
|
|
|
}
|
|
|
$goods[] = $good;
|
|
|
}
|
|
|
return $goods;
|
|
|
}
|
|
|
/**
|
|
|
* 版型等其它筛选项
|
|
|
* @param $filter
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function standard($filter)
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
$result = array();
|
|
|
foreach ($filter as $key => $val) {
|
|
|
if (substr_compare($key, 'parameter', 0, 9) != 0) {
|
|
|
continue;
|
|
|
}
|
|
|
if (!isset($val['sub']) || empty($val['sub'])) {
|
|
|
continue;
|
|
|
}
|
|
|
$sub = array();
|
|
|
foreach ($val['sub'] as $pval) {
|
|
|
if (isset(self::$params['parameter_' . $val['standard_id']]) && self::$params['parameter_' . $val['standard_id']] == $pval['standard_id']) {
|
|
|
$tmpParams = self::$params;
|
|
|
unset($tmpParams['parameter_' . $val['standard_id']]);
|
|
|
self::$selected['parameter_' . $val['standard_id']] = array(
|
|
|
'name' => $pval['standard_name'],
|
|
|
'href' => self::buildUrl($tmpParams)
|
|
|
);
|
|
|
if (self::checkSearch('parameter_' . $val['standard_id'])) {
|
|
|
return array();
|
|
|
}
|
|
|
}
|
|
|
$sub[] = array(
|
|
|
'name' => $pval['standard_name'],
|
|
|
'href' => self::buildUrl(array_merge($params, array(
|
|
|
'parameter_' . $val['standard_id'] => $pval['standard_id']
|
|
|
))) ,
|
|
|
'checked' => isset(self::$params['parameter_' . $val['standard_id']]) && self::$params['parameter_' . $val['standard_id']] == $pval['standard_id'] ? true : false
|
|
|
);
|
|
|
}
|
|
|
if (!empty($sub) && count($sub) > 1) {
|
|
|
$result[] = array(
|
|
|
'name' => $val['standard_name'],
|
|
|
'sub' => $sub
|
|
|
);
|
|
|
}
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 性别
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function gender($filter)
|
|
|
{
|
|
|
if (empty($filter) || !isset($filter['gender']) || empty($filter['gender'])) {
|
|
|
return array();
|
|
|
}
|
|
|
$params = self::$params;
|
|
|
$gender = isset($params['gender']) ? $params['gender'] : '';
|
|
|
if (isset($params['gender'])) {
|
|
|
unset($params['gender']);
|
|
|
}
|
|
|
//设置选中
|
|
|
if ($gender == '1,3' || $gender == '2,3') {
|
|
|
self::$selected['gender'] = array(
|
|
|
'name' => $gender == '1,3' ? 'BOYS' : 'GIRLS',
|
|
|
'href' => self::buildUrl($params)
|
|
|
);
|
|
|
}
|
|
|
|
|
|
if (self::checkSearch('gender')) {
|
|
|
return array();
|
|
|
}
|
|
|
$result = array();
|
|
|
foreach ($filter['gender'] as $key => $val) {
|
|
|
$result[] = array(
|
|
|
'name' => $val,
|
|
|
'href' => self::buildUrl(array_merge($params, array(
|
|
|
'gender' => $key,
|
|
|
))) ,
|
|
|
'checked' => isset(self::$params['gender']) && self::$params['gender'] == $key ? true : false
|
|
|
);
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 组织搜索列表页面的左侧分类
|
|
|
* @param array $sort
|
|
|
* @return array
|
|
|
*/
|
|
|
|
|
|
public static function groupSort($sort)
|
|
|
{
|
|
|
$options = self::$options;
|
|
|
if (isset($options['controller']) && $options['controller'] == 'Search') {
|
|
|
return array();
|
|
|
}
|
|
|
//设置导航
|
|
|
self::setListNav($options);
|
|
|
$params = self::$params;
|
|
|
$result = array(
|
|
|
'all' => array(
|
|
|
'name' => '全部品类',
|
|
|
'href' => self::buildUrl() ,
|
|
|
'active' => isset($params['msort']) ? false : true,
|
|
|
) ,
|
|
|
'list' => array()
|
|
|
);
|
|
|
$sortList = array();
|
|
|
foreach ($sort as $key => $val) {
|
|
|
//若参数有分类,设置导航
|
|
|
if (isset($params['msort']) && $params['msort'] == $val['sort_id']) {
|
|
|
//是否有品牌
|
|
|
$navIndex = isset($option['brandName']) && $option['brandName'] ? 2 : 1;
|
|
|
self::$listNav[$navIndex] = array(
|
|
|
'name' => $val['sort_name'],
|
|
|
'href' => self::buildUrl(array(
|
|
|
'msort' => $val['sort_id'],
|
|
|
))
|
|
|
);
|
|
|
}
|
|
|
unset($params['msort']);
|
|
|
unset($params['misort']);
|
|
|
$sortList[$key]['name'] = $val['sort_name'];
|
|
|
$sortList[$key]['active'] = isset(self::$params['msort']) && self::$params['msort'] == $val['sort_id'] ? true : false;
|
|
|
$sortList[$key]['childList'][] = array(
|
|
|
'name' => '全部分类',
|
|
|
'href' => self::buildUrl(array_merge($params, array('msort'=>$val['sort_id'])))
|
|
|
);
|
|
|
if (isset($val['sub']) && !empty($val['sub'])) {
|
|
|
foreach ($val['sub'] as $k => $v) {
|
|
|
$sortList[$key]['childList'][$k+1]['name'] = $v['sort_name'];
|
|
|
$sortList[$key]['childList'][$k+1]['href'] = self::buildUrl(array_merge($params, array('msort' => $val['sort_id'], 'misort' => $v['sort_id'])));
|
|
|
$sortList[$key]['childList'][$k+1]['childActive'] = isset(self::$params['misort']) && self::$params['misort'] == $v['sort_id'] ? true : false;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
$result['list'] = $sortList;
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
public static function searchSort($sort)
|
|
|
{
|
|
|
$result = array();
|
|
|
$options = self::$options;
|
|
|
$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_merge($params,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['msort']);
|
|
|
unset($params['misort']);
|
|
|
self::$selected['sort'] = array(
|
|
|
'name' => $v['sort_name'],
|
|
|
'href' => self::buildUrl($params)
|
|
|
);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if (self::checkSearch('msrot') || self::checkSearch('misort')) {
|
|
|
return array();
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
/**
|
|
|
* 品牌,可以多选
|
|
|
* @param array $filter
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function brand($filter)
|
|
|
{
|
|
|
$options = self::$options;
|
|
|
//品牌列表返回空
|
|
|
if (isset($options['brandName'])) {
|
|
|
return array();
|
|
|
}
|
|
|
$result = array(
|
|
|
'default' => array() ,
|
|
|
'brandIndex' => array(
|
|
|
array(
|
|
|
'index' => 'all',
|
|
|
'name' => '全部'
|
|
|
)
|
|
|
),
|
|
|
'brandsShow' => array()
|
|
|
);
|
|
|
$params = self::$params;
|
|
|
//url中的品牌ids
|
|
|
$brandIds = isset($params['brand']) && !empty($params['brand']) ? explode(',', $params['brand']) : array();
|
|
|
if (isset($filter['brand']) && !empty($filter['brand'])) {
|
|
|
$brand = $filter['brand'];
|
|
|
//已选中品牌数量
|
|
|
$existBrandNum = 0;
|
|
|
//已选中品牌标签名
|
|
|
$existName = '';
|
|
|
foreach ($brand as $key => $v) {
|
|
|
$selectBrandIds = $brandIds;
|
|
|
//品牌已被选中
|
|
|
if (in_array($v['id'], $brandIds)) {
|
|
|
$filterKey = array_search($v['id'], $selectBrandIds);
|
|
|
unset($selectBrandIds[$filterKey]);
|
|
|
$url = self::buildUrl(array_merge($params, array(
|
|
|
'brand' => implode(',', $selectBrandIds)
|
|
|
)));
|
|
|
if ($existBrandNum === 0) {
|
|
|
$existName .= $v['brand_name'].'、';
|
|
|
}
|
|
|
if ($existBrandNum === 1){
|
|
|
$existName .= substr($v['brand_name'], 0, 3).'...';
|
|
|
}
|
|
|
$existBrandNum++;
|
|
|
}
|
|
|
//该品牌未被选中
|
|
|
else {
|
|
|
$selectBrandIds[] = $v['id'];
|
|
|
$url = self::buildUrl(array_merge($params, array(
|
|
|
'brand' => implode(',', $selectBrandIds)
|
|
|
)));
|
|
|
}
|
|
|
$this_brand = array(
|
|
|
'id' => $v['id'],
|
|
|
'href' => $url,
|
|
|
'name' => $v['brand_name'],
|
|
|
'key' => strtolower($v['brand_name']),
|
|
|
'checked' => 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;
|
|
|
}
|
|
|
//品牌列表
|
|
|
$brandList[$v['brand_alif']][] = $this_brand;
|
|
|
$brandAll[$v['id']] = $v['brand_name'];
|
|
|
}
|
|
|
//清空品牌参数
|
|
|
unset($params['brand']);
|
|
|
//设置选中
|
|
|
if (isset(self::$params['brand']) && !empty(self::$params['brand'])) {
|
|
|
self::$selected['brand'] = array(
|
|
|
'name' => rtrim($existName, '、'),
|
|
|
'href' => self::buildUrl($params)
|
|
|
);
|
|
|
}
|
|
|
ksort($brandList);
|
|
|
//品牌列表排序, 添加品牌索引
|
|
|
$index_key = array();
|
|
|
foreach ($brandList as $key => $val) {
|
|
|
if ($key && !in_array($key, $index_key) && !is_numeric($key)) {
|
|
|
$index['index'] = strtolower(($key));
|
|
|
$index['name'] = $key;
|
|
|
$index_key[] = $index;
|
|
|
}
|
|
|
if ($key && !in_array($key, $index_key) && is_numeric($key) && count($result['brandIndex']) === 1) {
|
|
|
$index['index'] = '0-9';
|
|
|
$index['name'] = '0~9';
|
|
|
$result['brandIndex'][] = $index;
|
|
|
}
|
|
|
if (is_array($val)) {
|
|
|
foreach ($val as $v) {
|
|
|
$result['brandsShow'][] = $v;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
$result['brandIndex'] = array_merge($result['brandIndex'], $index_key);
|
|
|
unset($brandList);
|
|
|
}
|
|
|
//搜索页已选中,返回空
|
|
|
if (self::checkSearch('brand')) {
|
|
|
return array();
|
|
|
}
|
|
|
//品牌数量小于等于10,隐藏更多按钮
|
|
|
if (count($result['brandsShow']) < 11) {
|
|
|
$result['hideMore'] = true;
|
|
|
}
|
|
|
// print_r($result); exit;
|
|
|
return $result;
|
|
|
}
|
|
|
/**
|
|
|
* 尺码的链接,不能多选
|
|
|
* @param array $filter
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function size($filter, $isAjax = false)
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
$paramsValue = array_filter($params);
|
|
|
$sizeId = isset($params['size']) && !empty($params['size']) ? $params['size'] : '';
|
|
|
if (isset($params['size'])) {
|
|
|
unset($params['size']);
|
|
|
}
|
|
|
$result = array();
|
|
|
if (!$isAjax && empty($paramsValue)) {
|
|
|
return array();
|
|
|
}
|
|
|
if (isset($filter['size']) && !empty($filter['size'])) {
|
|
|
$size = $filter['size'];
|
|
|
foreach ($size as $k=> $v) {
|
|
|
//设置选中
|
|
|
if ($v['size_id'] == $sizeId) {
|
|
|
self::$selected['size'] = array(
|
|
|
'name' => $v['size_name'],
|
|
|
'href' => self::buildUrl($params)
|
|
|
);
|
|
|
}
|
|
|
$result[] = array(
|
|
|
'name' => $v['size_name'],
|
|
|
'href' => self::buildUrl(array_merge($params, array(
|
|
|
'size' => $v['size_id']
|
|
|
))) ,
|
|
|
'checked' => isset(self::$params['size']) && self::$params['size'] == $v['size_id'] ? true : false
|
|
|
);
|
|
|
}
|
|
|
if ( self::checkSearch('size')) {
|
|
|
return array();
|
|
|
}
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 颜色,不能多选
|
|
|
* @param array $filter
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function color($filter)
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
$colorId = isset($params['color']) && !empty(self::$params['color']) ? self::$params['color'] : '';
|
|
|
if (isset($params['color'])) {
|
|
|
unset($params['color']);
|
|
|
}
|
|
|
$result = array();
|
|
|
$color = $filter['color'];
|
|
|
foreach ($color as $v) {
|
|
|
//设置已选中
|
|
|
if ($v['color_id'] == $colorId) {
|
|
|
$background = empty($v['color_value']) ? '#' . $v['color_code'] : "url(" . $v['color_value'] . ")";
|
|
|
self::$selected['color'] = array(
|
|
|
'color' => $background,
|
|
|
'href' => self::buildUrl($params)
|
|
|
);
|
|
|
}
|
|
|
$result[] = array(
|
|
|
'name' => $v['color_name'],
|
|
|
'rgb' => empty($v['color_value']) ? '#' . $v['color_code'] : "url({$v['color_value']})",
|
|
|
'href' => self::buildUrl(array_merge($params, array(
|
|
|
'color' => $v['color_id']
|
|
|
))) ,
|
|
|
);
|
|
|
}
|
|
|
if (self::checkSearch('color')) {
|
|
|
return array();
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取价格,不能多选
|
|
|
* @param array $filter
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function price($filter)
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
$priceId = isset($params['price']) && !empty(self::$params['price']) ? self::$params['price'] : '';
|
|
|
if (isset($params['price'])) {
|
|
|
unset($params['price']);
|
|
|
}
|
|
|
$result = array();
|
|
|
//设置已选中价格
|
|
|
if (!empty($priceId) && isset($filter['price'][$priceId])) {
|
|
|
self::$selected['price'] = array(
|
|
|
'name' => $filter['price'][$priceId],
|
|
|
'href' => self::buildUrl($params)
|
|
|
);
|
|
|
}else{
|
|
|
$price = explode(',', $priceId);
|
|
|
if (count($price) == 2) {
|
|
|
if (!$price[0]) {
|
|
|
$price[0] = 0;
|
|
|
}
|
|
|
if (!$price[1]) {
|
|
|
$price[1] = 99999;
|
|
|
}
|
|
|
self::$selected['price'] = array(
|
|
|
'name' => self::$params['price'] == '2000,99999' ? '¥2000以上' : '¥' . (int)$price[0] . '-' . (int)$price[1],
|
|
|
'href' => self::buildurl($params)
|
|
|
);
|
|
|
}
|
|
|
}
|
|
|
if (self::checkSearch('price')) {
|
|
|
return array();
|
|
|
}
|
|
|
//返回价格条件
|
|
|
foreach ($filter['price'] as $key => $val) {
|
|
|
$val = trim($val,'¥');
|
|
|
$result[] = array(
|
|
|
'name' => $val,
|
|
|
'href' => self::buildUrl(array_merge($params, array(
|
|
|
'price' => $key
|
|
|
))) ,
|
|
|
'checked' => isset(self::$params['price']) && self::$params['price'] == $key ? true : false
|
|
|
);
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取自定义价格要提交的地址
|
|
|
*/
|
|
|
public static function customPrice($filter)
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
$result = array(
|
|
|
'min' => '',
|
|
|
'max' => ''
|
|
|
);
|
|
|
$priceId = isset($params['price']) && !empty(self::$params['price']) ? self::$params['price'] : '';
|
|
|
if (isset($params['price']) && !isset($filter['price'][$priceId]) ) {
|
|
|
$price = explode(',', $params['price']);
|
|
|
unset($params['price']);
|
|
|
if (!$price[0]) {
|
|
|
$price[0] = 0;
|
|
|
}
|
|
|
if (!$price[1]) {
|
|
|
$price[1] = 99999;
|
|
|
}
|
|
|
$result = array(
|
|
|
'min' => $price[0],
|
|
|
'max' => $price[1]
|
|
|
);
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 风格,可以多选
|
|
|
* @param array $filter
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function style($filter)
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
$styleIds = isset($params['style']) && !empty($params['style']) ? explode(',', $params['style']) : array();
|
|
|
if (isset($params['style'])) {
|
|
|
unset($params['style']);
|
|
|
}
|
|
|
$result = array();
|
|
|
$style = $filter['style'];
|
|
|
$styleNum = 0;
|
|
|
$styleName = '';
|
|
|
foreach ($style as $v) {
|
|
|
//选中的筛选条件
|
|
|
if (in_array($v['style_id'], $styleIds)) {
|
|
|
if (!$styleNum) {
|
|
|
$styleName = $v['style_name']."、";
|
|
|
}
|
|
|
elseif ($styleNum ===1){
|
|
|
$styleName .= substr($v['style_name'], 0, 3).'...';
|
|
|
}
|
|
|
$styleNum ++;
|
|
|
}
|
|
|
$selectedStyle = isset(self::$params['style']) && !empty(self::$params['style']) ? explode(',', self::$params['style']) : array();
|
|
|
//风格id在提交的参数中,构造url参数去除该风格id
|
|
|
if (in_array($v['style_id'], $selectedStyle)) {
|
|
|
$filterKey = array_search($v['style_id'], $selectedStyle);
|
|
|
unset($selectedStyle[$filterKey]);
|
|
|
$url = self::buildUrl(array_merge($params, array(
|
|
|
'style' => implode(',', $selectedStyle)
|
|
|
)));
|
|
|
}
|
|
|
//该风格url参数中添加该风格的id
|
|
|
else {
|
|
|
$selectedStyle[] = $v['style_id'];
|
|
|
$url = self::buildUrl(array_merge($params, array(
|
|
|
'style' => implode(',', $selectedStyle)
|
|
|
)));
|
|
|
}
|
|
|
$result[] = array(
|
|
|
'id' => $v['style_id'],
|
|
|
'name' => $v['style_name'],
|
|
|
'href' => $url,
|
|
|
);
|
|
|
}
|
|
|
if (isset(self::$params['style']) && !empty(self::$params['style'])) {
|
|
|
self::$selected['style'] = array(
|
|
|
'name' => rtrim($styleName, '、'),
|
|
|
'href' => self::buildUrl($params)
|
|
|
);
|
|
|
}
|
|
|
$data[0] = array(
|
|
|
'attr' => 'style',
|
|
|
'name' => '风格',
|
|
|
'showMulti' => true,
|
|
|
'sub' => $result
|
|
|
);
|
|
|
return $data;
|
|
|
}
|
|
|
/**
|
|
|
* 高级选项
|
|
|
*/
|
|
|
public static function seniorChose($filter)
|
|
|
{
|
|
|
$style = self::style($filter);
|
|
|
$other = self::standard($filter);
|
|
|
$result = array_merge($style,$other);
|
|
|
//搜索页已选中,返回空
|
|
|
if (self::checkSearch('style') || self::checkSearch('parameter')) {
|
|
|
return array();
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 每页显示数量
|
|
|
*/
|
|
|
public static function viewNum()
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
$viewNum = array(60, 100, 200);
|
|
|
$result = array();
|
|
|
foreach ($viewNum as $value) {
|
|
|
$params['viewNum'] = $value;
|
|
|
$params['page'] = 1;
|
|
|
$result[] = array(
|
|
|
'count' => $value,
|
|
|
'href' => self::buildUrl($params)
|
|
|
);
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 显示行数
|
|
|
*/
|
|
|
public static function rowNum($num = 5)
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
$params['rowNum'] = $num;
|
|
|
return self::buildUrl($params);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 是否特价
|
|
|
*/
|
|
|
public static function specialoffer()
|
|
|
{
|
|
|
$selected = '';
|
|
|
$params = self::$params;
|
|
|
if (isset($params['specialoffer']) && !empty($params['specialoffer'])) {
|
|
|
unset($params['specialoffer']);
|
|
|
$selected = true;
|
|
|
}
|
|
|
else {
|
|
|
$params['specialoffer'] = 'Y';
|
|
|
}
|
|
|
return array(
|
|
|
'name' => '打折',
|
|
|
'href' => self::buildUrl($params) ,
|
|
|
'checked' => $selected
|
|
|
);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 是否限量
|
|
|
*/
|
|
|
public static function limited()
|
|
|
{
|
|
|
$selected = '';
|
|
|
$params = self::$params;
|
|
|
if (isset($params['limited']) && !empty($params['limited'])) {
|
|
|
unset($params['limited']);
|
|
|
$selected = true;
|
|
|
}
|
|
|
else {
|
|
|
$params['limited'] = 'Y';
|
|
|
}
|
|
|
return array(
|
|
|
'name' => '限量',
|
|
|
'href' => self::buildUrl($params) ,
|
|
|
'checked' => $selected
|
|
|
);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 是否新品
|
|
|
*/
|
|
|
public static function isnew()
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
$selected = '';
|
|
|
if (isset($params['new']) && !empty($params['new'])) {
|
|
|
unset($params['new']);
|
|
|
$selected = true;
|
|
|
}
|
|
|
else {
|
|
|
$params['new'] = 'Y';
|
|
|
}
|
|
|
return array(
|
|
|
'name' => '新品',
|
|
|
'href' => self::buildUrl($params) ,
|
|
|
'checked' => $selected
|
|
|
);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 排序是否最新
|
|
|
*/
|
|
|
public static function orderTime()
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
if (isset($params['order'])) {
|
|
|
unset($params['order']);
|
|
|
}
|
|
|
$result = array(
|
|
|
'name' => '最新',
|
|
|
'href' => isset(self::$params['order']) && self::$params['order'] == 's_t_desc' ? self::buildUrl($params) : self::buildUrl(array_merge($params, array(
|
|
|
'order' => 's_t_asc'
|
|
|
))) ,
|
|
|
'active' => isset(self::$params['order']) && self::$params['order'] == 's_t_asc' ? true : ''
|
|
|
);
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 排序是否默认
|
|
|
*/
|
|
|
public static function orderDefault()
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
if (isset($params['order'])) {
|
|
|
unset($params['order']);
|
|
|
}
|
|
|
$result = array(
|
|
|
'name' => '默认',
|
|
|
'href' => self::buildUrl($params) ,
|
|
|
'active' => !isset(self::$params['order']) || empty(self::$params['order']) ? true : ''
|
|
|
);
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 价格排序
|
|
|
*/
|
|
|
public static function orderPrice()
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
if (isset($params['order'])) {
|
|
|
unset($params['order']);
|
|
|
}
|
|
|
if (!isset(self::$params['order']) || empty(self::$params['order']) || !in_array(self::$params['order'], array(
|
|
|
's_p_asc',
|
|
|
's_p_desc'
|
|
|
))) {
|
|
|
$url = self::buildUrl(array_merge($params, array(
|
|
|
'order' => 's_p_asc'
|
|
|
)));
|
|
|
$active = '';
|
|
|
$desc = '';
|
|
|
}
|
|
|
else if (self::$params['order'] == 's_p_asc') {
|
|
|
$url = self::buildUrl(array_merge($params, array(
|
|
|
'order' => 's_p_desc'
|
|
|
)));
|
|
|
$active = true;
|
|
|
$desc = true;
|
|
|
|
|
|
}
|
|
|
else {
|
|
|
$url = self::buildUrl(array_merge($params, array(
|
|
|
'order' => 's_p_asc'
|
|
|
)));
|
|
|
$active = true;
|
|
|
$desc = false;
|
|
|
}
|
|
|
$result = array(
|
|
|
'name' => '价格',
|
|
|
'href' => $url,
|
|
|
'hasSortOrient' => true,
|
|
|
'active' => $active,
|
|
|
'desc' => $desc
|
|
|
);
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 折扣排序
|
|
|
*/
|
|
|
public static function orderDiscount()
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
if (isset($params['order'])) {
|
|
|
unset($params['order']);
|
|
|
}
|
|
|
if (!isset(self::$params['order']) || empty(self::$params['order']) || !in_array(self::$params['order'], array(
|
|
|
'p_d_asc',
|
|
|
'p_d_desc'
|
|
|
))) {
|
|
|
$url = self::buildUrl(array_merge($params, array(
|
|
|
'order' => 'p_d_asc'
|
|
|
)));
|
|
|
$active = '';
|
|
|
$desc = true;
|
|
|
}
|
|
|
else if (self::$params['order'] == 'p_d_asc') {
|
|
|
$url = self::buildUrl(array_merge($params, array(
|
|
|
'order' => 'p_d_desc'
|
|
|
)));
|
|
|
$desc = true;
|
|
|
$active = true;
|
|
|
}
|
|
|
else {
|
|
|
$url = self::buildUrl(array_merge($params, array(
|
|
|
'order' => 'p_d_asc'
|
|
|
)));
|
|
|
$desc = false;
|
|
|
$active = true;
|
|
|
}
|
|
|
$result = array(
|
|
|
'name' => '折扣',
|
|
|
'href' => $url,
|
|
|
'hasSortOrient' => true,
|
|
|
'active' => $active,
|
|
|
'desc' => $desc,
|
|
|
);
|
|
|
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 组织参数
|
|
|
* @param array $params
|
|
|
* @return string
|
|
|
*/
|
|
|
private static function buildUrl($params = array())
|
|
|
{
|
|
|
if (empty($params)) {
|
|
|
return self::current();
|
|
|
}
|
|
|
$queryPath = explode('?', $_SERVER['REQUEST_URI']);
|
|
|
$params_arr = array();
|
|
|
foreach ($params as $key => $val) {
|
|
|
if (is_array($val) || $val === '') {
|
|
|
continue;
|
|
|
}
|
|
|
$params_arr[] = $key . '=' . $val;
|
|
|
}
|
|
|
if (empty($params_arr)) {
|
|
|
return self::current();
|
|
|
}
|
|
|
else {
|
|
|
return (empty($queryPath[0]) ? '/' : $queryPath[0]) . '?' . implode('&', $params_arr);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取选中的条件
|
|
|
*/
|
|
|
public static function getSelected()
|
|
|
{
|
|
|
$result = array();
|
|
|
$data = array();
|
|
|
foreach (self::$selected as $key => $val) {
|
|
|
$data[] = $val;
|
|
|
}
|
|
|
if ($data) {
|
|
|
$result['conditions'] = $data;
|
|
|
$result['clearUrl'] = self::current();
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 打折区间
|
|
|
* @param array $list
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function getDiscount(array $list = array())
|
|
|
{
|
|
|
$params = self::$params;
|
|
|
$query = array();
|
|
|
$total = 0;
|
|
|
foreach ($list as $k => $v) {
|
|
|
$total += $v['count'];
|
|
|
$query['p_d'] = $k;
|
|
|
$list[$k]['href'] = self::buildUrl($query);
|
|
|
$list[$k]['active'] = isset($params['p_d']) && $params['p_d'] == $k ? true : false;
|
|
|
}
|
|
|
$result = array(
|
|
|
'list' => array_values($list)
|
|
|
);
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 最新上架
|
|
|
*/
|
|
|
public static function recentShelve($list = array())
|
|
|
{
|
|
|
if (empty($list)) {
|
|
|
return array();
|
|
|
}
|
|
|
$params = self::$params;
|
|
|
$query = array();
|
|
|
$data = array();
|
|
|
$i = 0;
|
|
|
foreach ($list as $k => $v) {
|
|
|
$star_time = strtotime($k);
|
|
|
$end_time = $star_time+60*60*24;
|
|
|
$query['shelve_time'] = '';
|
|
|
$query['shelve_time'] = $star_time.','.$end_time;
|
|
|
if (isset($params['shelve_time']) && $query['shelve_time'] == $params['shelve_time']) {
|
|
|
$data[$i]['active'] = true;
|
|
|
}
|
|
|
$data[$i]['href'] = self::buildUrl($query);
|
|
|
$data[$i]['name'] = $k;
|
|
|
$i++;
|
|
|
}
|
|
|
$result = array(
|
|
|
//'updateNum' => $total,
|
|
|
'list' => $data
|
|
|
);
|
|
|
unset($data);
|
|
|
unset($query);
|
|
|
return $result;
|
|
|
}
|
|
|
/**
|
|
|
* 当前页地址
|
|
|
*/
|
|
|
public static function current()
|
|
|
{
|
|
|
$url = explode('?', 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
|
|
|
self::$listNav[0]['href'] = $url[0];
|
|
|
return $url[0];
|
|
|
}
|
|
|
/**
|
|
|
* 下一页
|
|
|
*/
|
|
|
public static function next($total)
|
|
|
{
|
|
|
$param = self::$params;
|
|
|
$page = self::$page;
|
|
|
$next = array();
|
|
|
if ($page < $total) {
|
|
|
$page ++;
|
|
|
$param['page'] = $page;
|
|
|
$nextUrl = self::buildUrl($param);
|
|
|
$next = array(
|
|
|
'href' => $nextUrl,
|
|
|
'src' => 'http://img10.static.yhbimg.com/product/2014/01/15/11/01fa01614784f6239760f1b749663016f1.jpg?imageMogr2/thumbnail/235x314/extent/235x314/background/d2hpdGU=/position/center/quality/90'
|
|
|
);
|
|
|
}
|
|
|
return $next;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 组织产品的图片
|
|
|
* @param $product
|
|
|
* @param $options
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function getProductPic($product, $options)
|
|
|
{
|
|
|
$result = array();
|
|
|
if (isset($product[0]['goods_list']) && !empty($product[0]['goods_list'])){
|
|
|
foreach ($product[0]['goods_list'] as $key => $val){
|
|
|
$result[$key]['coverImg'] = Images::getImageUrl($val['images_url'], $options['imgSize'][0], $options['imgSize'][1]);
|
|
|
$result[$key]['url'] = Helpers::getUrlBySkc($product[0]['product_id'], $val['goods_id'], $product[0]['cn_alphabet']);
|
|
|
$result[$key]['src'] = Images::getImageUrl($val['images_url'], $options['imgSize'][0], $options['imgSize'][1]);
|
|
|
}
|
|
|
}
|
|
|
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);
|
|
|
}
|
|
|
|
|
|
//组织静态资源数据格式
|
|
|
public static function formatNodeContent($code)
|
|
|
{
|
|
|
$nodeContent = BrandData::getByNodeContent($code);
|
|
|
if (isset($nodeContent['code']) && $nodeContent['code'] === 200) {
|
|
|
$result = array();
|
|
|
|
|
|
$string = $nodeContent['data'];
|
|
|
$hrefPatten="/<a href=[\'\"]?([^\'\" ]+).*?>/";
|
|
|
preg_match_all($hrefPatten, $string, $href);
|
|
|
|
|
|
$pattern = "/[img|IMG].*?src=['|\"](.*?(?:[.gif|.jpg]))['|\"].*?[\/]?>/";
|
|
|
preg_match_all($pattern,$string,$img);
|
|
|
|
|
|
foreach($href[1] as $key=>$vo){
|
|
|
$result[$key]['href'] = $vo;
|
|
|
$result[$key]['src'] = $img[1][$key];
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 组织品牌店铺信息
|
|
|
* @param $shop
|
|
|
* @param $shopSort
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function shop($shop, $shopSort)
|
|
|
{
|
|
|
$url = Helpers::url('','',$shop['brand_domain']);
|
|
|
$shopEntry = array();
|
|
|
$sort = array();
|
|
|
foreach ($shopSort 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::$options['controller']) && self::$options['controller'] == 'Search') {
|
|
|
foreach (self::$params as $key =>$val) {
|
|
|
if (strpos($key, $param) !== false) {
|
|
|
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' => '搜索“<span id="nav_keyword">'.$param['query'].'</span>”共<span id="nav_keyword_count">'.$total.'</span>个结果'
|
|
|
);
|
|
|
}else{
|
|
|
self::$listNav[1] = array(
|
|
|
'href' => '',
|
|
|
'name' => '所有商品'
|
|
|
);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 并行调接口url获取(搜索产品数据)
|
|
|
* @param
|
|
|
*/
|
|
|
public static function getProductUrl($condition)
|
|
|
{
|
|
|
// 排序数据映射表
|
|
|
$orderMaps = array(
|
|
|
's_t_desc' => 'shelve_time:desc',
|
|
|
's_t_asc' => 'shelve_time:asc',
|
|
|
's_p_asc' => 'sales_price:asc',
|
|
|
's_p_desc' => 'sales_price:desc',
|
|
|
'p_d_desc' => 'discount:desc',
|
|
|
'p_d_asc' => 'discount:asc',
|
|
|
'skn_desc' => 'product_skn:desc',
|
|
|
'skn_asc' => 'product_skn:asc',
|
|
|
'activities_desc' => 'activities.order_by:desc',
|
|
|
'activities_asc' => 'activities.order_by:asc',
|
|
|
's_n_asc' => 'sales_num:asc',
|
|
|
's_n_desc' => 'sales_num:desc',
|
|
|
'activities_id_desc' => 'activities.activity_id:desc',
|
|
|
'activities_id_asc' => 'activities.activity_id:asc',
|
|
|
);
|
|
|
$param = array();
|
|
|
$param['status'] = 1; // 是否上架,1表示在架,2表示不在
|
|
|
$param['sales'] = 'Y'; // 只搜索销售的产品
|
|
|
$param['stocknumber'] = 1; // 过滤掉已售罄的商品
|
|
|
if (!isset($condition['order'])) {
|
|
|
$param['order'] = $orderMaps['s_t_desc'];
|
|
|
} else {
|
|
|
$param['order'] = $orderMaps[$condition['order']];
|
|
|
}
|
|
|
if (!isset($condition['page'])) {
|
|
|
$param['page'] = 1;
|
|
|
}
|
|
|
|
|
|
if(isset($condition['viewNum'])) {
|
|
|
$param['viewNum'] = $condition['viewNum'];
|
|
|
} else if (!isset($condition['limit'])) {
|
|
|
$param['viewNum'] = 60;
|
|
|
} else {
|
|
|
$param['viewNum'] = $condition['limit'];
|
|
|
unset($condition['limit']);
|
|
|
}
|
|
|
if (!empty($condition)) {
|
|
|
$param += $condition;
|
|
|
}
|
|
|
return Yohobuy::httpBuildQuery(SearchData::getUrl(), $param);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 并行调接口url获取(产品分类)
|
|
|
* @param
|
|
|
*/
|
|
|
|
|
|
public static function getClassesUrl($condition)
|
|
|
{
|
|
|
$condition['sales'] = 'Y'; //在销售商品分类
|
|
|
$condition['status'] = 1; //上架商品分类
|
|
|
$condition['stocknumber'] = 1; //过滤掉已售罄
|
|
|
return Yohobuy::httpBuildQuery(SearchData::getUrl('sort'), $condition);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 并行调接口url获取(获取折扣区间)
|
|
|
* @param
|
|
|
*/
|
|
|
|
|
|
public static function getDiscountUrl($param = array())
|
|
|
{
|
|
|
return Yohobuy::httpBuildQuery(SearchData::getUrl('discount'), $param);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 并行调接口url获取(获取最新上架)
|
|
|
*/
|
|
|
public static function getRecentShelveUrl($param = array())
|
|
|
{
|
|
|
return Yohobuy::httpBuildQuery(SearchData::getUrl('recent'), $param);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 并行调接口url获取(获取品牌数据)
|
|
|
*/
|
|
|
public static function getBrandUrl($customOptions = array())
|
|
|
{
|
|
|
// 构建必传参数
|
|
|
$param = Yohobuy::param();
|
|
|
$param['brand_id'] = $customOptions['brandId'];
|
|
|
$param['uid'] = $customOptions['uid'];
|
|
|
$param['method'] = 'app.brand.getBrandIntro';
|
|
|
$param['client_secret'] = Sign::getSign($param);
|
|
|
|
|
|
return Yohobuy::httpBuildQuery(Yohobuy::API_URL, $param);
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 获取品牌店铺接口地址
|
|
|
* @param $param
|
|
|
* @return string
|
|
|
*/
|
|
|
public static function getShopUrl($param)
|
|
|
{
|
|
|
return Yohobuy::httpBuildQuery(SearchData::getUrl('shop'), $param);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取品牌首页banner条
|
|
|
*
|
|
|
* @return array 品牌banner条数据
|
|
|
*/
|
|
|
public static function getBannerFormat($brand, $brandBanner)
|
|
|
{
|
|
|
// 根据品牌Id获取品牌banner图
|
|
|
$bannerImg = Helpers::getImageUrl($brandBanner, '', 150);
|
|
|
$brandHome = Helpers::url('/product/index/brand', '', $brand['brand_domain']);
|
|
|
$brandIntro = Helpers::url('/product/index/brandIntro', '', $brand['brand_domain']);
|
|
|
$is_favorite = false;
|
|
|
if(isset($brand['is_favorite'])){
|
|
|
// 获取是否收藏
|
|
|
if ($brand['is_favorite'] == 'Y') {
|
|
|
$is_favorite = true;
|
|
|
} elseif ($brand['is_favorite'] == 'N') {
|
|
|
$is_favorite = false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 返回banner数据
|
|
|
return array(
|
|
|
'bannerHeight' => '150',
|
|
|
'coled' => $is_favorite,
|
|
|
'banner' => $bannerImg,
|
|
|
'brandHome' => $brandHome,
|
|
|
'brandIntro' => $brandIntro
|
|
|
);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 搜索条件
|
|
|
*/
|
|
|
public static function filter()
|
|
|
{
|
|
|
$result = array();
|
|
|
//频道
|
|
|
$result['channel'] = array();
|
|
|
//性别
|
|
|
$result['gender'] = self::gender(self::$filter);
|
|
|
//品牌
|
|
|
$result['brand'] = self::brand(self::$filter);
|
|
|
//价格
|
|
|
$result['price'] = self::price(self::$filter);
|
|
|
$result['customPrice'] = self::customPrice(self::$filter);
|
|
|
//颜色
|
|
|
$result['color'] = self::color(self::$filter);
|
|
|
//尺寸
|
|
|
$result['size'] = self::size(self::$filter);
|
|
|
//高级选项
|
|
|
$result['seniorChose'] = self::seniorChose(self::$filter);
|
|
|
return $result;
|
|
|
}
|
|
|
/**
|
|
|
* 其他选项
|
|
|
*/
|
|
|
public static function getOpts()
|
|
|
{
|
|
|
//排序方式
|
|
|
$result['sortType'] = array( self::orderDefault(),self::orderTime(),self::orderPrice(),self::orderDiscount());
|
|
|
//特殊:新品、特价、限量
|
|
|
$result['checks'] = array(self::isnew(),self::specialoffer(),self::limited());
|
|
|
//每行显示5个产品
|
|
|
$result['fivePerLine'] = true;
|
|
|
//每行显示6个产品
|
|
|
$result['sixPerLineHref'] = true;
|
|
|
//每页显示的数量
|
|
|
$result['countPerPage'] = self::$options['viewNum'];
|
|
|
//可选每页显示数量
|
|
|
$result['pageCounts'] = self::viewNum();
|
|
|
$result['curPage'] = self::$page;
|
|
|
$result['pageCount'] = self::$pageTotal;
|
|
|
$result['nextHref'] = ($next = self::next(self::$pageTotal, self::$filter)) ? $next['href'] : '';
|
|
|
return $result;
|
|
|
}
|
|
|
} |
...
|
...
|
|