search
parent
1b0e0a98d2
commit
60d76d07a5
|
|
@ -14,7 +14,7 @@ return array(
|
|||
'IS_DEVELOP' => true,
|
||||
|
||||
// 显示页面Trace信息
|
||||
'SHOW_PAGE_TRACE' => false,
|
||||
'SHOW_PAGE_TRACE' => true,
|
||||
|
||||
// 允许访问的模块列表
|
||||
'MODULE_ALLOW_LIST' => array('Admin', 'Api', 'Home'),
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ return array(
|
|||
'common_ip_name' => 'ip地址',
|
||||
'common_admin_name' => '管理员',
|
||||
'common_not_login_name' => '未登录',
|
||||
'common_not_data_tips' => '没有数据',
|
||||
'common_not_data_tips' => '没有相关数据',
|
||||
'common_create_time_name' => '创建时间',
|
||||
'common_reg_time_name' => '注册时间',
|
||||
'common_upd_time_name' => '更新时间',
|
||||
|
|
|
|||
|
|
@ -28,9 +28,15 @@ class SearchController extends CommonController
|
|||
// 调用父类前置方法
|
||||
parent::_initialize();
|
||||
|
||||
// 品牌id
|
||||
$this->params['brand_id'] = intval(I('brand_id', 0));
|
||||
|
||||
// 分类id
|
||||
$this->params['category_id'] = intval(I('category_id', 0));
|
||||
|
||||
// 筛选价格id
|
||||
$this->params['screening_price_id'] = intval(I('screening_price_id', 0));
|
||||
|
||||
// 搜索关键字
|
||||
$this->params['keywords'] = trim(I('keywords'));
|
||||
|
||||
|
|
@ -79,7 +85,8 @@ class SearchController extends CommonController
|
|||
public function GoodsList()
|
||||
{
|
||||
$data = SearchService::GoodsList($this->params);
|
||||
$this->ajaxReturn(L('common_operation_success'), 0, $data);
|
||||
$msg = empty($data['data']) ? L('common_not_data_tips') : L('common_operation_success');
|
||||
$this->ajaxReturn($msg, 0, $data);
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,9 +1,11 @@
|
|||
<!-- 商品分类 -->
|
||||
<div id="goods-category" class="am-container" data-controller-name="{{$controller_name}}">
|
||||
<div class="goods-category-s">
|
||||
<div class="goods-category-title">
|
||||
<span class="all-goods">全部分类</span>
|
||||
</div>
|
||||
<a href="{{:U('Home/Search/Index')}}">
|
||||
<div class="goods-category-title">
|
||||
<span class="all-goods">全部分类</span>
|
||||
</div>
|
||||
</a>
|
||||
<div class="category-content" <if condition="isset($controller_name) and $controller_name neq 'Index'">style="display:none;"</if>>
|
||||
<div class="category">
|
||||
<ul class="category-list" id="js_climit_li">
|
||||
|
|
|
|||
|
|
@ -27,9 +27,9 @@
|
|||
</div>
|
||||
<ul class="select">
|
||||
<p class="title-tips">
|
||||
<span>分类</span>
|
||||
<strong>复古复古</strong>
|
||||
<span>筛选结果</span>
|
||||
<span>筛选出</span>
|
||||
<strong>...</strong>
|
||||
<span>条数据</span>
|
||||
</p>
|
||||
<li class="select-result">
|
||||
<dl>
|
||||
|
|
@ -45,7 +45,7 @@
|
|||
<dd class="select-all selected"><a href="javascript:;">不限</a></dd>
|
||||
<if condition="!empty($brand_list)">
|
||||
<foreach name="brand_list" item="brand">
|
||||
<dd><a href="javascript:;" data-value="{{$brand.id}}">{{$brand.name}}</a></dd>
|
||||
<dd><a href="javascript:;" data-value="{{$brand.id}}" data-field="brand_id">{{$brand.name}}</a></dd>
|
||||
</foreach>
|
||||
<else />
|
||||
<span class="not-tips">没有相关品牌</span>
|
||||
|
|
@ -60,7 +60,7 @@
|
|||
<dd class="select-all selected"><a href="javascript:;">不限</a></dd>
|
||||
<if condition="!empty($category_list)">
|
||||
<foreach name="category_list" item="category">
|
||||
<dd><a href="javascript:;">{{$category.name}}</a></dd>
|
||||
<dd><a href="javascript:;" data-value="{{$category.id}}" data-field="category_id">{{$category.name}}</a></dd>
|
||||
</foreach>
|
||||
<else />
|
||||
<span class="not-tips">没有相关分类</span>
|
||||
|
|
@ -74,8 +74,8 @@
|
|||
<div class="dd-conent" data-selected-tag="screening-price">
|
||||
<dd class="select-all selected"><a href="javascript:;">不限</a></dd>
|
||||
<if condition="!empty($screening_price_list)">
|
||||
<foreach name="screening_price_list" item="price">
|
||||
<dd><a href="javascript:;">{{$price.name}}</a></dd>
|
||||
<foreach name="screening_price_list" item="screening_price">
|
||||
<dd><a href="javascript:;" data-value="{{$screening_price.id}}" data-field="screening_price_id">{{$screening_price.name}}</a></dd>
|
||||
</foreach>
|
||||
<else />
|
||||
<span class="not-tips">没有相关价格</span>
|
||||
|
|
|
|||
|
|
@ -159,6 +159,21 @@ class GoodsService
|
|||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取商品总数
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2018-09-07
|
||||
* @desc description
|
||||
* @param array $params [输入参数: where, field, is_photo]
|
||||
*/
|
||||
public static function GoodsTotal($params = [])
|
||||
{
|
||||
$where = empty($params['where']) ? [] : $params['where'];
|
||||
return (int) M('Goods')->alias('g')->join(' INNER JOIN __GOODS_CATEGORY_JOIN__ AS gci ON g.id=gci.goods_id')->where($where)->count('DISTINCT g.id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取商品列表
|
||||
* @author Devil
|
||||
|
|
@ -180,7 +195,7 @@ class GoodsService
|
|||
|
||||
$m = isset($params['m']) ? intval($params['m']) : 0;
|
||||
$n = isset($params['n']) ? intval($params['n']) : 10;
|
||||
$data = M('Goods')->alias('g')->join(' INNER JOIN __GOODS_CATEGORY_JOIN__ AS gci ON g.id=gci.goods_id') ->field($field)->where($where)->group('g.id')->order($order_by)->limit($m, $n)->select();
|
||||
$data = M('Goods')->alias('g')->join(' INNER JOIN __GOODS_CATEGORY_JOIN__ AS gci ON g.id=gci.goods_id')->field($field)->where($where)->group('g.id')->order($order_by)->limit($m, $n)->select();
|
||||
if(!empty($data))
|
||||
{
|
||||
$images_host = C('IMAGE_HOST');
|
||||
|
|
|
|||
|
|
@ -25,9 +25,9 @@ class SearchService
|
|||
public static function GoodsCategoryList($params = [])
|
||||
{
|
||||
// 根据分类id获取同级列表
|
||||
$category = GoodsService::GoodsCategoryRow(['id'=>$params['category_id']]);
|
||||
$pid = empty($category['pid']) ? 0 : $category['pid'];
|
||||
return GoodsService::GoodsCategoryList(['pid'=>$pid]);
|
||||
// $category = GoodsService::GoodsCategoryRow(['id'=>$params['category_id']]);
|
||||
// $pid = empty($category['pid']) ? 0 : $category['pid'];
|
||||
return GoodsService::GoodsCategoryList(['pid'=>$params['category_id']]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -57,14 +57,61 @@ class SearchService
|
|||
public static function GoodsList($params = [])
|
||||
{
|
||||
$result = [
|
||||
'total' => 0,
|
||||
'data' => [],
|
||||
'page_total' => 0,
|
||||
'total' => 450,
|
||||
'data' => [],
|
||||
];
|
||||
$goods_where = [
|
||||
'g.is_delete_time' => 0,
|
||||
'g.is_delete_time' => 0,
|
||||
'g.is_shelves' => 1,
|
||||
];
|
||||
$result['data'] = GoodsService::GoodsList(['where'=>$goods_where]);
|
||||
|
||||
// 品牌
|
||||
if(!empty($params['brand_id']))
|
||||
{
|
||||
$goods_where['g.brand_id'] = intval($params['brand_id']);
|
||||
}
|
||||
|
||||
// 分类id
|
||||
if(!empty($params['category_id']))
|
||||
{
|
||||
$category_ids = GoodsService::GoodsCategoryItemsIds(['category_id'=>$params['category_id']]);
|
||||
$category_ids[] = $params['category_id'];
|
||||
$goods_where['gci.id'] = ['in', $category_ids];
|
||||
}
|
||||
|
||||
// 筛选价格
|
||||
if(!empty($params['screening_price_id']))
|
||||
{
|
||||
$price = M('ScreeningPrice')->field('min_price,max_price')->where(['is_enable'=>1, 'id'=>intval($params['screening_price_id'])])->find();
|
||||
if(!empty($price['min_price']) && !empty($price['max_price']))
|
||||
{
|
||||
$goods_where['g.price'] = [
|
||||
['EGT', $price['min_price']],
|
||||
['LT', $price['max_price']],
|
||||
];
|
||||
} else if(!empty($price['min_price']))
|
||||
{
|
||||
$goods_where['g.price'] = ['EGT', $price['min_price']];
|
||||
} else if(!empty($price['max_price']))
|
||||
{
|
||||
$goods_where['g.price'] = ['LT', $price['max_price']];
|
||||
}
|
||||
}
|
||||
|
||||
// 获取商品总数
|
||||
$result['total'] = GoodsService::GoodsTotal(['where'=>$goods_where]);
|
||||
|
||||
// 获取商品列表
|
||||
if($result['total'] > 0)
|
||||
{
|
||||
$page = intval(I('page', 1));
|
||||
$n = 10;
|
||||
$m = intval(($page-1)*$n);
|
||||
$result['data'] = GoodsService::GoodsList(['where'=>$goods_where, 'm'=>$m, 'n'=>$n]);
|
||||
|
||||
$result['page_total'] = ceil($result['total']/$n);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,8 +50,9 @@ body{margin:0;
|
|||
|
||||
|
||||
a:link,a:visited,a:hover{text-decoration:none; outline:none;}
|
||||
a:hover, a:focus { color: #d2364c; }
|
||||
|
||||
/*所有超链接不要下划线*/
|
||||
|
||||
*, *:after, *:before{
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
|
|
|
|||
|
|
@ -142,7 +142,7 @@ dl#select3 .dd-conent{ left:-200%; right:0px;}
|
|||
.nav.white{padding-left:0px}
|
||||
|
||||
/*选中效果*/
|
||||
.search-list ul li:hover .i-pic.limit,.search-side li:hover .i-pic.check{box-shadow:0px 12px 12px -10px rgba(0,0,0,.4);}
|
||||
.search-list ul li:hover .i-pic.limit,.search-side li:hover .i-pic.check{box-shadow:0px 12px 12px -10px rgba(0,0,0,.4); border: 1px solid #d2364c; }
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 640px) {
|
||||
|
|
|
|||
|
|
@ -9,17 +9,20 @@ $(function()
|
|||
$('#'+selected_tag_name).remove();
|
||||
} else {
|
||||
if ($('#'+selected_tag_name).length > 0) {
|
||||
$('#'+selected_tag_name).find("a").html($(this).text());
|
||||
$('#'+selected_tag_name).find('a').html($(this).find('a').text());
|
||||
$('#'+selected_tag_name).find('a').attr('data-value', $(this).find('a').attr('data-value'));
|
||||
} else {
|
||||
var copy_html = $(this).clone();
|
||||
$(".select-result dl").append(copy_html.attr("id", selected_tag_name));
|
||||
}
|
||||
}
|
||||
get_goods_list(1);
|
||||
});
|
||||
|
||||
$(document).on('click', '.select-result dl dd', function() {
|
||||
$(this).remove();
|
||||
$('#'+$(this).attr('id')+'-dl').find('.select-all').addClass('selected').siblings().removeClass('selected');
|
||||
get_goods_list(1);
|
||||
});
|
||||
|
||||
$(document).on('click', 'ul.select dd', function() {
|
||||
|
|
@ -39,7 +42,7 @@ $(function()
|
|||
$(this).hide();
|
||||
$('.select-result .select-no').show();
|
||||
$('.select-result').hide();
|
||||
|
||||
get_goods_list(1);
|
||||
});
|
||||
|
||||
|
||||
|
|
@ -113,15 +116,31 @@ $(function()
|
|||
search_nav();
|
||||
|
||||
// 获取商品列表
|
||||
function get_goods_list()
|
||||
function get_goods_list(page)
|
||||
{
|
||||
var keywords = $('#search-input').val() || '';
|
||||
// 请求参数处理
|
||||
var data = {
|
||||
keywords: $('#search-input').val() || '',
|
||||
page: page || parseInt($('.search-pages-submit').attr('data-page')) || 1,
|
||||
}
|
||||
$('.select-result .selected a').each(function(k, v)
|
||||
{
|
||||
data[$(this).attr('data-field')] = $(this).attr('data-value');
|
||||
});
|
||||
|
||||
// 清空数据
|
||||
if(data.page == 1)
|
||||
{
|
||||
$('.data-list').html('');
|
||||
}
|
||||
|
||||
// 请求数据
|
||||
$.ajax({
|
||||
url:$('.search-pages-submit').data('url'),
|
||||
type:'POST',
|
||||
dataType:"json",
|
||||
timeout:10000,
|
||||
data:{keywords: keywords},
|
||||
data:data,
|
||||
success:function(result)
|
||||
{
|
||||
if(result.code == 0 && result.data.data.length > 0)
|
||||
|
|
@ -131,6 +150,8 @@ $(function()
|
|||
var html = '<li class="am-animation-scale-up"><div class="i-pic limit">';
|
||||
html += '<a href="'+result.data.data[i]['goods_url']+'" target="_blank">';
|
||||
html += '<img src="'+result.data.data[i]['images']+'" />';
|
||||
html += '</a>';
|
||||
html += '<a href="'+result.data.data[i]['goods_url']+'" target="_blank">';
|
||||
html += '<p class="title fl">'+result.data.data[i]['title']+'</p>';
|
||||
html += '</a>';
|
||||
html += '<p class="price fl"><b>¥</b><strong>'+result.data.data[i]['price']+'</strong></p>';
|
||||
|
|
@ -139,10 +160,11 @@ $(function()
|
|||
|
||||
$('.data-list').append(html);
|
||||
}
|
||||
|
||||
$('.search-pages-submit').attr('data-page', data.page+1);
|
||||
} else {
|
||||
Prompt(result.msg);
|
||||
}
|
||||
$('.select .title-tips strong').text(result.data.total);
|
||||
},
|
||||
error:function(xhr, type)
|
||||
{
|
||||
|
|
@ -150,6 +172,12 @@ $(function()
|
|||
}
|
||||
});
|
||||
}
|
||||
get_goods_list();
|
||||
get_goods_list(1);
|
||||
|
||||
// 加载更多数据
|
||||
$('.search-pages-submit').on('click', function()
|
||||
{
|
||||
get_goods_list();
|
||||
});
|
||||
|
||||
});
|
||||
Loading…
Reference in New Issue