问答系统增强版

This commit is contained in:
devil_gong 2019-03-11 17:57:15 +08:00
parent 01fecfb60a
commit d8f9eaf90f
39 changed files with 564 additions and 138 deletions

View File

@ -84,6 +84,9 @@ class Answer extends Common
// 状态
$this->assign('common_is_show_list', lang('common_is_show_list'));
// 是否
$this->assign('common_is_text_list', lang('common_is_text_list'));
// 参数
$this->assign('params', $params);
return $this->fetch();

View File

@ -21,6 +21,14 @@
<option value="{{$v.id}}" {{if isset($params['is_show']) and $params['is_show'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
<select name="is_reply" class="am-radius c-p m-t-10 m-l-5 param-where" data-placeholder="是否回复...">
<option value="-1">是否回复...</option>
{{if !empty($common_is_text_list)}}
{{foreach $common_is_text_list as $v}}
<option value="{{$v.id}}" {{if isset($params['is_reply']) and $params['is_reply'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
{{/if}}
</select>
<div class="param-date param-where m-l-5">
<input type="text" autocomplete="off" name="time_start" class="Wdate am-radius m-t-10" placeholder="起始时间" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd HH:mm:ss'})" {{if isset($params['time_start'])}}value="{{$params.time_start}}"{{/if}}/>
<span>~</span>
@ -37,10 +45,12 @@
<tr>
<th class="am-hide-sm-only">用户信息</th>
<th class="am-hide-sm-only">联系信息</th>
<th style="width: 25%;">内容</th>
<th>是否显示</th>
<th>标题</th>
<th class="am-hide-sm-only">内容</th>
<th class="am-hide-sm-only">回复内容</th>
<th class="am-hide-sm-only">回复时间</th>
<th class="am-hide-sm-only">创建时间</th>
<th>是否显示</th>
<th>更多</th>
<th>操作</th>
</tr>
@ -79,12 +89,20 @@
<span class="cr-ddd">未填写</span>
{{/if}}
</td>
<td>{{$v.content}}</td>
<td>{{$v.title}}</td>
<td class="am-hide-sm-only reply-content">{{$v.content}}</td>
<td class="am-hide-sm-only reply-content">
{{if $v['is_reply'] eq 1}}
{{$v.reply}}
{{else /}}
<span class="cr-ddd">未回复</span>
{{/if}}
</td>
<td class="am-hide-sm-only">{{$v.reply_time}}</td>
<td class="am-hide-sm-only">{{$v.add_time}}</td>
<td>
<a href="javascript:;" class="am-icon-btn am-icon-check submit-state {{if $v['is_show'] eq 1}}am-success{{else /}}am-default{{/if}}" data-url="{{:MyUrl('admin/answer/statusupdate')}}" data-id="{{$v.id}}" data-state="{{$v['is_show']}}" data-is-update-status="1"></a>
</td>
<td class="am-hide-sm-only">{{$v.reply}}</td>
<td class="am-hide-sm-only">{{$v.add_time}}</td>
<td>
<span class="am-icon-caret-down c-p" data-am-modal="{target: '#my-popup{{$v.id}}'}"> 查看更多</span>
<div class="am-popup am-radius" id="my-popup{{$v.id}}">
@ -130,6 +148,9 @@
{{/if}}
</dd>
<dt>标题</dt>
<dd>{{if empty($v['title'])}}<span class="cr-ddd">未填写</span>{{else /}}{{$v.title}}{{/if}}</dd>
<dt>内容</dt>
<dd>{{$v.content}}</dd>
@ -137,7 +158,16 @@
<dd>{{if empty($v['is_show_text'])}}<span class="cr-ddd">未填写</span>{{else /}}{{$v.is_show_text}}{{/if}}</dd>
<dt>回复内容</dt>
<dd>{{if empty($v['reply'])}}<span class="cr-ddd">未填写</span>{{else /}}{{$v.reply}}{{/if}}</dd>
<dd>
{{if $v['is_reply'] eq 1}}
{{$v.reply}}
{{else /}}
<span class="cr-ddd">未回复</span>
{{/if}}
</dd>
<dt>回复时间</dt>
<dd>{{$v.reply_time}}</dd>
<dt>创建时间</dt>
<dd>{{$v.add_time}}</dd>

View File

@ -11,6 +11,7 @@
namespace app\index\controller;
use app\service\ArticleService;
use app\service\SeoService;
/**
* 文章详情
@ -64,7 +65,7 @@ class Article extends Common
}
// 浏览器标题
$this->assign('home_seo_site_title', $this->GetBrowserSeoTitle($article['data'][0]['title'], 1));
$this->assign('home_seo_site_title', SeoService::BrowserSeoTitle($article['data'][0]['title']));
// 获取分类和文字
$article_category_content = ArticleService::ArticleCategoryListContent();

View File

@ -10,6 +10,8 @@
// +----------------------------------------------------------------------
namespace app\index\controller;
use app\service\SeoService;
/**
* 商品分类
* @author Devil
@ -41,6 +43,9 @@ class Category extends Common
*/
public function Index()
{
// 浏览器名称
$this->assign('home_seo_site_title', SeoService::BrowserSeoTitle('商品分类', 1));
return $this->fetch();
}
}

View File

@ -255,38 +255,11 @@ class Common extends Controller
*/
private function NavInit()
{
$navigation = NavigationService::Home();
$navigation = NavigationService::Nav();
$this->nav_header = $navigation['header'];
$this->nav_footer = $navigation['footer'];
}
/**
* [GetBrowserSeoTitle 获取浏览器seo标题]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2017-02-25T14:21:21+0800
* @param [string] $title [标题]
* @param [int] $type [页面类型 0, 1, 2]
* @return [string] [浏览器seo标题]
*/
protected function GetBrowserSeoTitle($title, $type)
{
switch($type)
{
case 0:
break;
case 1:
$site_name = MyC('home_site_name');
break;
default:
$site_name = MyC('home_seo_site_title');
}
return empty($title) ? $site_name : $title.' - '.$site_name;
}
/**
* [_empty 空方法操作]
* @author Devil

View File

@ -11,6 +11,7 @@
namespace app\index\controller;
use app\service\CustomViewService;
use app\service\SeoService;
/**
* 自定义页面
@ -58,7 +59,7 @@ class CustomView extends Common
CustomViewService::CustomViewAccessCountInc(['id'=>$id]);
// 浏览器标题
$this->assign('home_seo_site_title', $this->GetBrowserSeoTitle($data['data'][0]['title'], 1));
$this->assign('home_seo_site_title', SeoService::BrowserSeoTitle($data['data'][0]['title']));
$this->assign('data', $data['data'][0]);
$this->assign('is_header', $data['data'][0]['is_header']);

View File

@ -11,6 +11,7 @@
namespace app\index\controller;
use app\service\GoodsService;
use app\service\SeoService;
/**
* 商品详情
@ -68,8 +69,11 @@ class Goods extends Common
// 商品收藏总数
$ret['data'][0]['favor_count'] = GoodsService::GoodsFavorTotal(['goods_id'=>$id]);
// 商品数据
$this->assign('goods', $ret['data'][0]);
$this->assign('home_seo_site_title', $ret['data'][0]['title']);
// 浏览器名称
$this->assign('home_seo_site_title', SeoService::BrowserSeoTitle($ret['data'][0]['title']));
// 二维码
$this->assign('qrcode_url', MyUrl('index/qrcode/index', ['content'=>urlencode(base64_encode(MyUrl('index/goods/index', ['id'=>$id], true, true)))]));

View File

@ -12,6 +12,7 @@ namespace app\index\controller;
use app\service\SearchService;
use app\service\BrandService;
use app\service\SeoService;
/**
* 搜索
@ -82,6 +83,9 @@ class Search extends Common
// 参数
$this->assign('params', $this->params);
// 浏览器名称
$this->assign('home_seo_site_title', SeoService::BrowserSeoTitle('商品搜索', 1));
return $this->fetch();
}
}

View File

@ -15,6 +15,7 @@ use app\service\OrderService;
use app\service\GoodsService;
use app\service\UserService;
use app\service\BuyService;
use app\service\SeoService;
/**
* 用户
@ -139,6 +140,9 @@ class User extends Common
// 用户中心顶部钩子
$this->assign('plugins_view_user_center_top_data', Hook::listen('plugins_view_user_center_top', ['hook_name'=>'plugins_view_user_center_top', 'is_backend'=>false, 'user'=>$this->user]));
// 浏览器名称
$this->assign('home_seo_site_title', SeoService::BrowserSeoTitle('用户中心', 1));
return $this->fetch();
}
@ -153,6 +157,9 @@ class User extends Common
{
if(empty($this->user))
{
// 浏览器名称
$this->assign('home_seo_site_title', SeoService::BrowserSeoTitle('密码找回', 1));
return $this->fetch();
} else {
$this->assign('msg', '已经登录了,如要重置密码,请先退出当前账户');
@ -174,6 +181,9 @@ class User extends Common
{
if(empty($this->user))
{
// 浏览器名称
$this->assign('home_seo_site_title', SeoService::BrowserSeoTitle('用户注册', 1));
return $this->fetch();
} else {
$this->assign('msg', '已经登录了,如要注册新账户,请先退出当前账户');
@ -198,6 +208,9 @@ class User extends Common
{
if(empty($this->user))
{
// 浏览器名称
$this->assign('home_seo_site_title', SeoService::BrowserSeoTitle('用户邮箱注册', 1));
$this->assign('referer_url', $this->GetrefererUrl());
return $this->fetch();
} else {
@ -223,6 +236,9 @@ class User extends Common
{
if(empty($this->user))
{
// 浏览器名称
$this->assign('home_seo_site_title', SeoService::BrowserSeoTitle('用户短信注册', 1));
$this->assign('referer_url', $this->GetrefererUrl());
return $this->fetch();
} else {
@ -248,6 +264,9 @@ class User extends Common
{
if(empty($this->user))
{
// 浏览器名称
$this->assign('home_seo_site_title', SeoService::BrowserSeoTitle('用户登录', 1));
$this->assign('referer_url', $this->GetrefererUrl());
return $this->fetch();
} else {
@ -277,6 +296,9 @@ class User extends Common
{
if(empty($this->user))
{
// 浏览器名称
$this->assign('home_seo_site_title', SeoService::BrowserSeoTitle('用户登录', 1));
$this->assign('referer_url', $this->GetrefererUrl());
return $this->fetch();
} else {

View File

@ -11,6 +11,7 @@
namespace app\plugins\answers;
use think\Controller;
use app\service\PluginsService;
/**
* 问答 - 钩子入口
@ -36,8 +37,31 @@ class Hook extends Controller
// 默认返回视图
} else {
return 'hello world!';
// 大导航前面添加问答地址
if(!empty($params['hook_name']) && $params['hook_name'] == 'plugins_service_navigation_header_handle')
{
if(is_array($params['header']))
{
// 获取应用数据
$ret = PluginsService::PluginsData('answers', ['images']);
if($ret['code'] == 0 && !empty($ret['data']['application_name']))
{
$nav = [
'id' => 0,
'pid' => 0,
'name' => $ret['data']['application_name'],
'url' => PluginsHomeUrl('answers', 'index', 'index'),
'data_type' => 'custom',
'is_show' => 1,
'is_new_window_open' => 0,
'items' => [],
];
array_unshift($params['header'], $nav);
}
}
}
}
return DataReturn('无需处理', 0);
}
}
?>

View File

@ -14,6 +14,7 @@ use think\Controller;
use app\service\PluginsService;
use app\service\AnswerService;
use app\service\UserService;
use app\service\SeoService;
use app\plugins\answers\Service;
/**
@ -65,6 +66,10 @@ class Index extends Controller
$this->assign('plugins_answers_rc_list', []);
}
// 浏览器标题
$seo_name = empty($base['data']['application_name']) ? '问答' : $base['data']['application_name'];
$this->assign('home_seo_site_title', SeoService::BrowserSeoTitle($seo_name, 1));
return $this->fetch('../../../plugins/view/answers/index/index');
}
@ -100,9 +105,93 @@ class Index extends Controller
$detail = Service::AnswerRow($params);
$this->assign('plugins_answers_detail', $detail);
// 浏览器标题
if(!empty($detail['data']['title']))
{
$this->assign('home_seo_site_title', SeoService::BrowserSeoTitle($detail['data']['title']));
} else if(!empty($detail['data']['content']))
{
$this->assign('home_seo_site_title', SeoService::BrowserSeoTitle($detail['data']['content']));
}
return $this->fetch('../../../plugins/view/answers/index/detail');
}
/**
* 搜索
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-03-11
* @desc description
* @param [array] $params [输入参数]
*/
public function search($params = [])
{
if(input('post.answers_keywords'))
{
$answers_keywords = str_replace(['?', ' ', '+', '-'], '', trim(input('post.answers_keywords')));
return redirect(PluginsHomeUrl('answers', 'index', 'search', ['answers_keywords'=>$answers_keywords]));
} else {
// 基础数据
$base = PluginsService::PluginsData('answers', ['images']);
$this->assign('plugins_answers_data', isset($base['data']) ? $base['data'] : []);
// 商品数据
$goods = Service::GoodsList();
$this->assign('plugins_answers_goods_list', $goods['data']['goods']);
// 推荐问答
if(!empty($base['data']['category_ids']))
{
$answers = Service::AnswerList(['n'=>100, 'category_ids'=> $base['data']['category_ids']]);
$this->assign('plugins_answers_rc_list', $answers['data']);
} else {
$this->assign('plugins_answers_rc_list', []);
}
// 获取搜索数据
// 分页
$number = 10;
// 条件
$keywords_arr = empty($params['answers_keywords']) ? [] : ['keywords'=>$params['answers_keywords']];
$where = Service::AnswerListWhere(array_merge($params, $keywords_arr));
// 获取总数
$total = AnswerService::AnswerTotal($where);
// 分页
$page_params = array(
'number' => $number,
'total' => $total,
'where' => $params,
'page' => isset($params['page']) ? intval($params['page']) : 1,
'url' => PluginsHomeUrl('answers', 'index', 'search'),
);
$page = new \base\Page($page_params);
$this->assign('page_html', $page->GetPageHtml());
// 获取列表
$data_params = array(
'm' => $page->GetPageStarNumber(),
'n' => $number,
'where' => $where,
'field' => 'id,title,content,add_time',
);
$data = AnswerService::AnswerList($data_params);
$this->assign('plugins_answers_data_list', $data['data']);
// 参数
$this->assign('params', $params);
// 浏览器标题
$this->assign('home_seo_site_title', SeoService::BrowserSeoTitle('问答搜索', 1));
return $this->fetch('../../../plugins/view/answers/index/search');
}
}
/**
* 提问
* @author Devil

View File

@ -310,14 +310,15 @@ class Service
}
/**
* 问答列表
* 条件
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-06T21:31:53+0800
* @param [array] $params [输入参数]
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-03-11
* @desc description
* @param [array] $params [输入参数]
*/
public static function AnswerList($params = [])
public static function AnswerListWhere($params = [])
{
// 条件
$where = [
@ -328,7 +329,7 @@ class Service
// 搜索关键字
if(!empty($params['keywords']))
{
$where[] = ['content', 'like', '%'.$params['keywords'].'%'];
$where[] = ['title|content', 'like', '%'.$params['keywords'].'%'];
}
// 指定问答id
@ -337,6 +338,19 @@ class Service
$where[] = ['id', 'in', explode(',', $params['category_ids'])];
}
return $where;
}
/**
* 问答列表
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-06T21:31:53+0800
* @param [array] $params [输入参数]
*/
public static function AnswerList($params = [])
{
// 字段
$field = empty($params['field']) ? 'id,name,title,content,reply,is_reply,reply_time,add_time' : $params['field'];
@ -344,7 +358,7 @@ class Service
$data_params = array(
'm' => 0,
'n' => isset($params['n']) ? intval($params['n']) : 10,
'where' => $where,
'where' => self::AnswerListWhere($params),
'field' => $field,
);
return AnswerService::AnswerList($data_params);

View File

@ -1,12 +1,12 @@
{
"base":{
"plugins":"answers",
"name":"问答",
"name":"问答增强版",
"logo":"\/static\/upload\/images\/plugins_answers\/2019\/03\/06\/1551853529634743.png",
"author":"Devil",
"author_url":"https:\/\/shopxo.net\/",
"version":"1.0.0",
"desc":"问答系统",
"desc":"问答系统增强、独立首页、详情、搜索、可配置推荐问答及商品",
"apply_terminal":[
"pc",
"h5"
@ -17,6 +17,8 @@
"is_home":true
},
"hook":{
"plugins_service_navigation_header_handle":[
"app\\plugins\\answers\\Hook"
]
}
}

View File

@ -10,8 +10,13 @@
<a href="{{:PluginsAdminUrl('answers', 'admin', 'index')}}" class="fr fs-14 m-t-5 am-icon-mail-reply"> 返回</a>
</legend>
<div class="am-form-group">
<label>应用导航名称<span class="am-form-group-label-tips">空则不显示</span></label>
<input type="text" name="application_name" placeholder="应用导航名称" maxlength="16" data-validation-message="应用导航名称格式最多 16 个字符" class="am-radius" {{if !empty($data['application_name'])}} value="{{$data.application_name}}"{{/if}} />
</div>
<div class="am-form-group am-form-file">
<label class="block">中间横幅<span class="fs-12 fw-100 cr-999">建议1200像数X80像数</span></label>
<label class="block">中间横幅<span class="am-form-group-label-tips">建议1200像数X80像数</span></label>
<ul class="plug-file-upload-view plugins-images-view" data-form-name="images" data-max-number="1" data-dialog-type="images">
{{if !empty($data['images_old'])}}
<li>
@ -25,7 +30,7 @@
</div>
<div class="am-form-group">
<label>链接地址<span class="fs-12 fw-100 cr-999">带http://或https://</span></label>
<label>链接地址<span class="am-form-group-label-tips">带http://或https://</span></label>
<input type="url" placeholder="链接地址" name="url" data-validation-message="链接地址格式有误" class="am-radius" {{if !empty($data['url'])}} value="{{$data.url}}"{{/if}} />
</div>
@ -41,22 +46,22 @@
</div>
<div class="am-form-group">
<label>右侧推荐问答名称<span class="fs-12 fw-100 cr-999">(默认 推荐问答)</span></label>
<label>右侧推荐问答名称<span class="am-form-group-label-tips">默认 推荐问答</span></label>
<input type="text" name="right_top_rec_name" placeholder="右侧推荐问答名称" maxlength="30" data-validation-message="右侧推荐问答名称格式最多 30 个字符" class="am-radius" {{if !empty($data['right_top_rec_name'])}} value="{{$data.right_top_rec_name}}"{{/if}} />
</div>
<div class="am-form-group">
<label>中间最新问答名称<span class="fs-12 fw-100 cr-999">(默认 最新问答)</span></label>
<label>中间最新问答名称<span class="am-form-group-label-tips">默认 最新问答</span></label>
<input type="text" name="middle_new_name" placeholder="中间最新问答名称" maxlength="30" data-validation-message="中间最新问答名称格式最多 30 个字符" class="am-radius" {{if !empty($data['middle_new_name'])}} value="{{$data.middle_new_name}}"{{/if}} />
</div>
<div class="am-form-group">
<label>右侧推荐商品名称<span class="fs-12 fw-100 cr-999">(默认 推荐商品)</span></label>
<label>右侧推荐商品名称<span class="am-form-group-label-tips">默认 推荐商品</span></label>
<input type="text" name="right_top_goods_name" placeholder="右侧推荐商品名称" maxlength="30" data-validation-message="右侧推荐商品名称格式最多 30 个字符" class="am-radius" {{if !empty($data['right_top_goods_name'])}} value="{{$data.right_top_goods_name}}"{{/if}} />
</div>
<div class="am-form-group">
<label>最新问答展示数量<span class="fs-12 fw-100 cr-999">(默认 15 条)</span></label>
<label>最新问答展示数量<span class="am-form-group-label-tips">默认 15 条</span></label>
<input type="number" name="middle_new_page_number" placeholder="右侧推荐商品名称" maxlength="30" data-validation-message="请填写最新问答展示数量" class="am-radius" value="{{if !empty($data['middle_new_page_number'])}}{{$data.middle_new_page_number}}{{else /}}15{{/if}}" />
</div>

View File

@ -16,6 +16,17 @@
<a class="am-fr" href="{{:PluginsAdminUrl('answers', 'admin', 'baseinfo')}}">编辑</a>
</div>
<div class="am-panel-bd">
<div class="items">
<label>应用导航名称</label>
<div>
{{if empty($data['application_name'])}}
未设置应用导航名称
{{else /}}
{{$data.application_name}}
{{/if}}
</div>
</div>
<div class="items">
<label>右侧推荐问答名称</label>
<div>

View File

@ -23,7 +23,7 @@
</div>
<div class="am-form-group">
<label>url地址<span class="fs-12 fw-100 cr-ccc">带http://或https://</span></label>
<label>url地址<span class="fs-12 fw-100 cr-ccc">带http://或https://</span></label>
<input type="url" placeholder="url地址" name="url" data-validation-message="url格式有误" class="am-radius" {{if !empty($data)}} value="{{$data.url}}"{{/if}} required />
</div>

View File

@ -14,7 +14,7 @@
<!-- content start -->
<div class="am-g am-container plugins-answers plugins-answers-detail">
<!-- 幻灯片 -->
<!-- 详情 -->
<div class="am-u-md-8">
{{if isset($plugins_answers_detail['code']) and $plugins_answers_detail['code'] eq 0}}
{{if !empty($plugins_answers_detail['data']['content'])}}
@ -46,11 +46,8 @@
<!-- 右侧列表 -->
<div class="am-u-md-4 answers-sidebar">
<!-- 操作按钮 -->
<div class="answers-btn-list">
<a href="javascript:;" type="button" class="am-btn am-btn-warning am-icon-plus" data-am-modal="{target: '#plugins-answers-popup-ask'}"> 我要提问</a>
<a href="{{if empty($user)}}javascript:;{{else /}}{{:MyUrl('index/answer/index')}}{{/if}}" type="button" class="am-btn am-btn-danger am-icon-list-ul am-fr {{if empty($user)}}login-event{{/if}}"> 我的提问</a>
</div>
<!-- 操作 -->
{{include file="../../../plugins/view/answers/index/operation" /}}
<!-- 右侧推荐问答 -->
<div data-am-widget="list_news" class="am-list-news am-list-news-default">
@ -62,6 +59,7 @@
{{$plugins_answers_data.right_top_rec_name}}
{{/if}}
</h2>
<a href="{{:PluginsHomeUrl('answers', 'index', 'search')}}" target="_blank" class="am-list-news-more am-fr">更多 &raquo;</a>
</div>
<div class="am-list-news-bd">
{{if !empty($plugins_answers_rc_list)}}
@ -93,6 +91,7 @@
{{$plugins_answers_data.right_top_goods_name}}
{{/if}}
</h2>
<a href="{{:MyUrl('index/search/index')}}" target="_blank" class="am-list-news-more am-fr">更多 &raquo;</a>
</div>
{{if !empty($plugins_answers_goods_list)}}
<ul data-am-widget="gallery" class="am-gallery am-avg-sm-2 am-avg-md-2 am-avg-lg-2 am-gallery-bordered" data-am-gallery="{}">

View File

@ -23,10 +23,11 @@
{{foreach $plugins_answers_slider as $k=>$v}}
<li>
<a href="{{$v.url}}" target="_blank">
<img src="{{$v.images_url}}">
<img src="{{$v.images_url}}" alt="{{$v.name}}">
<div class="am-slider-desc">
<div class="am-slider-counter">
<span class="am-active">{{$k+1}}</span>/{{:count($plugins_answers_slider)}}</div>
<span class="am-active">{{$k+1}}</span>/{{:count($plugins_answers_slider)}}
</div>
{{$v.name}}
</div>
</a>
@ -39,11 +40,8 @@
<!-- 右侧列表 -->
<div class="am-u-md-4 answers-sidebar">
<!-- 操作按钮 -->
<div class="answers-btn-list">
<a href="javascript:;" type="button" class="am-btn am-btn-warning am-icon-plus" data-am-modal="{target: '#plugins-answers-popup-ask'}"> 我要提问</a>
<a href="{{if empty($user)}}javascript:;{{else /}}{{:MyUrl('index/answer/index')}}{{/if}}" type="button" class="am-btn am-btn-danger am-icon-list-ul am-fr {{if empty($user)}}login-event{{/if}}"> 我的提问</a>
</div>
<!-- 操作 -->
{{include file="../../../plugins/view/answers/index/operation" /}}
<!-- 右侧推荐问答 -->
<div data-am-widget="list_news" class="am-list-news am-list-news-default">
@ -55,6 +53,7 @@
{{$plugins_answers_data.right_top_rec_name}}
{{/if}}
</h2>
<a href="{{:PluginsHomeUrl('answers', 'index', 'search')}}" target="_blank" class="am-list-news-more am-fr">更多 &raquo;</a>
</div>
<div class="am-list-news-bd">
{{if !empty($plugins_answers_rc_list)}}
@ -89,7 +88,7 @@
<!-- 最新问答 -->
<div class="am-u-md-8 answers-middle-list">
<div data-am-widget="list_news" class="am-list-news am-list-news-default" >
<div data-am-widget="list_news" class="am-list-news am-list-news-default">
<div class="am-list-news-hd am-cf">
<h2>
{{if empty($plugins_answers_data['middle_new_name'])}}
@ -98,20 +97,21 @@
{{$plugins_answers_data.middle_new_name}}
{{/if}}
</h2>
<a href="{{:PluginsHomeUrl('answers', 'index', 'search')}}" target="_blank" class="am-list-news-more am-fr">更多 &raquo;</a>
</div>
<div class="am-list-news-bd">
{{if !empty($plugins_answers_middle_answer_list)}}
<ul class="am-list">
{{foreach $plugins_answers_middle_answer_list as $answers}}
<li class="am-g am-list-item-dated">
<a href="{{:PluginsHomeUrl('answers', 'index', 'detail', ['id'=>$answers['id']])}}" target="_blank" class="am-list-item-hd">
{{if empty($answers['title'])}}
{{$answers.content}}
{{else /}}
{{$answers.title}}
{{/if}}
</a>
<span class="am-list-date">{{$answers.add_time_date}}</span>
<a href="{{:PluginsHomeUrl('answers', 'index', 'detail', ['id'=>$answers['id']])}}" target="_blank" class="am-list-item-hd">
{{if empty($answers['title'])}}
{{$answers.content}}
{{else /}}
{{$answers.title}}
{{/if}}
</a>
<span class="am-list-date">{{$answers.add_time_date}}</span>
</li>
{{/foreach}}
</ul>
@ -132,6 +132,7 @@
{{$plugins_answers_data.right_top_goods_name}}
{{/if}}
</h2>
<a href="{{:MyUrl('index/search/index')}}" target="_blank" class="am-list-news-more am-fr">更多 &raquo;</a>
</div>
{{if !empty($plugins_answers_goods_list)}}
<ul data-am-widget="gallery" class="am-gallery am-avg-sm-2 am-avg-md-2 am-avg-lg-2 am-gallery-bordered" data-am-gallery="{}">

View File

@ -0,0 +1,17 @@
<!-- 操作按钮 -->
<div class="answers-btn-list">
<a href="javascript:;" type="button" class="am-btn am-btn-warning am-icon-plus" data-am-modal="{target: '#plugins-answers-popup-ask'}"> 我要提问</a>
<a href="{{if empty($user)}}javascript:;{{else /}}{{:MyUrl('index/answer/index')}}{{/if}}" type="button" class="am-btn am-btn-danger am-icon-list-ul am-fr {{if empty($user)}}login-event{{/if}}"> 我的提问</a>
</div>
<!-- 搜索 -->
<form action="{{:PluginsHomeUrl('answers', 'index', 'search')}}" method="post">
<div class="am-input-group am-input-group-sm answers-search">
<input type="text" name="answers_keywords" class="am-form-field" placeholder="其实搜索很简单^_^ !" autocomplete="off" {{if !empty($params['answers_keywords'])}}value="{{$params.answers_keywords}}"{{/if}} />
<span class="am-input-group-btn">
<button class="am-btn am-btn-default" type="submit">
<span class="am-icon-search am-icon-sm"></span>
</button>
</span>
</div>
</form>

View File

@ -0,0 +1,117 @@
{{include file="public/header" /}}
<!-- header top nav -->
{{include file="public/header_top_nav" /}}
<!-- search -->
{{include file="public/nav_search" /}}
<!-- header nav -->
{{include file="public/header_nav" /}}
<!-- goods category -->
{{include file="public/goods_category" /}}
<!-- content start -->
<div class="am-g am-container plugins-answers plugins-answers-detail">
<!-- 详情 -->
<div class="am-u-md-8">
{{if !empty($plugins_answers_data_list)}}
<div data-am-widget="list_news" class="am-list-news am-list-news-default">
<div class="am-list-news-bd">
<ul class="am-list">
{{foreach $plugins_answers_data_list as $answers}}
<li class="am-g am-list-item-dated">
<a href="{{:PluginsHomeUrl('answers', 'index', 'detail', ['id'=>$answers['id']])}}" target="_blank" class="am-list-item-hd">
{{if empty($answers['title'])}}
{{$answers.content}}
{{else /}}
{{$answers.title}}
{{/if}}
</a>
<span class="am-list-date">{{$answers.add_time_date}}</span>
</li>
{{/foreach}}
</ul>
</div>
</div>
{{$page_html|raw}}
{{else /}}
<div class="table-no"><i class="am-icon-warning"></i> 没有相关数据</div>
{{/if}}
</div>
<!-- 右侧列表 -->
<div class="am-u-md-4 answers-sidebar">
<!-- 操作 -->
{{include file="../../../plugins/view/answers/index/operation" /}}
<!-- 右侧推荐问答 -->
<div data-am-widget="list_news" class="am-list-news am-list-news-default">
<div class="am-list-news-hd am-cf">
<h2>
{{if empty($plugins_answers_data['right_top_rec_name'])}}
推荐问答
{{else /}}
{{$plugins_answers_data.right_top_rec_name}}
{{/if}}
</h2>
<a href="{{:PluginsHomeUrl('answers', 'index', 'search')}}" target="_blank" class="am-list-news-more am-fr">更多 &raquo;</a>
</div>
<div class="am-list-news-bd">
{{if !empty($plugins_answers_rc_list)}}
<ul class="am-list">
{{foreach $plugins_answers_rc_list as $answers}}
<li class="am-g am-list-item-dated">
<a href="{{:PluginsHomeUrl('answers', 'index', 'detail', ['id'=>$answers['id']])}}" target="_blank" class="am-list-item-hd">
{{if empty($answers['title'])}}
{{$answers.content}}
{{else /}}
{{$answers.title}}
{{/if}}
</a>
<span class="am-list-date">{{$answers.add_time_date}}</span>
</li>
{{/foreach}}
</ul>
{{/if}}
</div>
</div>
<!-- 推荐商品 -->
<div class="answers-goods">
<div class="am-list-news-hd am-cf">
<h2>
{{if empty($plugins_answers_data['right_top_goods_name'])}}
推荐商品
{{else /}}
{{$plugins_answers_data.right_top_goods_name}}
{{/if}}
</h2>
<a href="{{:MyUrl('index/search/index')}}" target="_blank" class="am-list-news-more am-fr">更多 &raquo;</a>
</div>
{{if !empty($plugins_answers_goods_list)}}
<ul data-am-widget="gallery" class="am-gallery am-avg-sm-2 am-avg-md-2 am-avg-lg-2 am-gallery-bordered" data-am-gallery="{}">
{{foreach $plugins_answers_goods_list as $goods}}
<li>
<div class="am-gallery-item">
<a href="{{$goods.goods_url}}" target="_blank">
<img src="{{$goods.images}}" alt="{{$goods.title}}"/>
<h3 class="am-gallery-title">{{$goods.title}}</h3>
</a>
</div>
</li>
{{/foreach}}
</ul>
{{/if}}
</div>
</div>
<!-- 提问popup -->
{{include file="../../../plugins/view/answers/index/popup" /}}
</div>
<!-- content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -11,7 +11,7 @@
</legend>
<div class="am-form-group am-form-file">
<label class="block">图片<span class="fs-12 fw-100 cr-999">建议50像数X50像数</span></label>
<label class="block">图片<span class="am-form-group-label-tips">建议50像数X50像数</span></label>
<ul class="plug-file-upload-view plugins-images-view" data-form-name="images" data-max-number="1" data-delete="0" data-dialog-type="images">
<li>
<input type="text" name="images" value="{{if !empty($data['images_old'])}}{{$data.images_old}}{{/if}}" data-validation-message="请上传图片" required />
@ -22,7 +22,7 @@
</div>
<div class="am-form-group">
<label>是否全局<span class="fs-12 fw-100 cr-999">(否则只在首页显示,是则全局展示)</span></label>
<label>是否全局<span class="am-form-group-label-tips">否则只在首页显示,是则全局展示</span></label>
<div>
{{foreach $is_whether_list as $v}}
<label class="am-radio-inline m-r-10">

View File

@ -16,7 +16,7 @@
</div>
<div class="am-form-group am-form-file">
<label class="block">在线客服<span class="fs-12 fw-100 cr-999">一行一个、以竖线 | 分割、如:客服一|123456</span></label>
<label class="block">在线客服<span class="am-form-group-label-tips">一行一个、以竖线 | 分割、如:客服一|123456</span></label>
<textarea rows="5" name="online_service" class="am-radius am-field-valid" placeholder="在线客服" data-validation-message="请填写在线客服" required>{{if !empty($data['online_service'])}}{{$data.online_service}}{{/if}}</textarea>
</div>
@ -26,7 +26,7 @@
</div>
<div class="am-form-group">
<label>是否全局<span class="fs-12 fw-100 cr-999">(否则只在首页显示,是则全局展示)</span></label>
<label>是否全局<span class="am-form-group-label-tips">否则只在首页显示,是则全局展示</span></label>
<div>
{{foreach $is_whether_list as $v}}
<label class="am-radio-inline m-r-10">
@ -45,7 +45,7 @@
</div>
<div class="am-form-group">
<label>距离顶部<span class="fs-12 fw-100 cr-999">默认距离顶部30%</span></label>
<label>距离顶部<span class="am-form-group-label-tips">默认距离顶部30%</span></label>
<div class="am-input-group am-input-radius am-input-group-sm">
<input type="number" name="distance_top" placeholder="距离顶部" min="0" max="100" data-validation-message="距离顶部 0~100" class="am-form-field" value="{{if isset($data['distance_top'])}}{{$data.distance_top}}{{else /}}30{{/if}}" required />
<span class="am-input-group-label">%</span>

View File

@ -11,7 +11,7 @@
</legend>
<div class="am-form-group am-form-file">
<label class="block">支付宝小程序二维码<span class="fs-12 fw-100 cr-999">建议100像数X100像数</span></label>
<label class="block">支付宝小程序二维码<span class="am-form-group-label-tips">建议100像数X100像数</span></label>
<ul class="plug-file-upload-view plugins-alipay_mini_qrcode_images-view" data-form-name="alipay_mini_qrcode_images" data-max-number="1" data-dialog-type="images">
{{if !empty($data['alipay_mini_qrcode_images'])}}
<li>
@ -25,7 +25,7 @@
</div>
<div class="am-form-group am-form-file">
<label class="block">支付宝生活号二维码<span class="fs-12 fw-100 cr-999">建议100像数X100像数</span></label>
<label class="block">支付宝生活号二维码<span class="am-form-group-label-tips">建议100像数X100像数</span></label>
<ul class="plug-file-upload-view plugins-alipay_fuwu_qrcode_images-view" data-form-name="alipay_fuwu_qrcode_images" data-max-number="1" data-dialog-type="images">
{{if !empty($data['alipay_fuwu_qrcode_images'])}}
<li>
@ -39,7 +39,7 @@
</div>
<div class="am-form-group am-form-file">
<label class="block">微信小程序二维码<span class="fs-12 fw-100 cr-999">建议100像数X100像数</span></label>
<label class="block">微信小程序二维码<span class="am-form-group-label-tips">建议100像数X100像数</span></label>
<ul class="plug-file-upload-view plugins-weixin_mini_qrcode_images-view" data-form-name="weixin_mini_qrcode_images" data-max-number="1" data-dialog-type="images">
{{if !empty($data['weixin_mini_qrcode_images'])}}
<li>
@ -53,7 +53,7 @@
</div>
<div class="am-form-group am-form-file">
<label class="block">微信公众号二维码<span class="fs-12 fw-100 cr-999">建议100像数X100像数</span></label>
<label class="block">微信公众号二维码<span class="am-form-group-label-tips">建议100像数X100像数</span></label>
<ul class="plug-file-upload-view plugins-weixin_fuwu_qrcode_images-view" data-form-name="weixin_fuwu_qrcode_images" data-max-number="1" data-dialog-type="images">
{{if !empty($data['weixin_fuwu_qrcode_images'])}}
<li>
@ -78,7 +78,7 @@
</div>
<div class="am-form-group">
<label>是否全局<span class="fs-12 fw-100 cr-999">(否则只在首页显示,是则全局展示)</span></label>
<label>是否全局<span class="am-form-group-label-tips">否则只在首页显示,是则全局展示</span></label>
<div>
{{foreach $is_whether_list as $v}}
<label class="am-radio-inline m-r-10">

View File

@ -11,7 +11,7 @@
</legend>
<div class="am-form-group am-form-file">
<label class="block">图片<span class="fs-12 fw-100 cr-999">建议1200像数X80像数</span></label>
<label class="block">图片<span class="am-form-group-label-tips">建议1200像数X80像数</span></label>
<ul class="plug-file-upload-view plugins-images-view" data-form-name="images" data-max-number="1" data-delete="0" data-dialog-type="images">
<li>
<input type="text" name="images" value="{{if !empty($data['images_old'])}}{{$data.images_old}}{{/if}}" data-validation-message="请上传图片" required />
@ -30,7 +30,7 @@
</div>
<div class="am-form-group">
<label>链接地址<span class="fs-12 fw-100 cr-999">带http://或https://</span></label>
<label>链接地址<span class="am-form-group-label-tips">带http://或https://</span></label>
<input type="url" placeholder="链接地址" name="url" data-validation-message="链接地址格式有误" class="am-radius" {{if !empty($data)}} value="{{$data.url}}"{{/if}} />
</div>
@ -46,7 +46,7 @@
</div>
<div class="am-form-group">
<label>是否全局<span class="fs-12 fw-100 cr-999">(默认首页)</span></label>
<label>是否全局<span class="am-form-group-label-tips">默认首页</span></label>
<div>
{{foreach $is_whether_list as $v}}
<label class="am-radio-inline m-r-10">
@ -57,7 +57,7 @@
</div>
<div class="am-form-group">
<label>有效时间<span class="fs-12 fw-100 cr-999">(留空则不限制)</span></label>
<label>有效时间<span class="am-form-group-label-tips">留空则不限制</span></label>
<div class="form-date">
<input type="text" autocomplete="off" name="time_start" class="Wdate am-radius" placeholder="起始时间" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd HH:mm:ss'})" {{if !empty($data['time_start'])}}value="{{$data.time_start}}"{{/if}}/>
<span>~</span>

View File

@ -11,12 +11,12 @@
</legend>
<div class="am-form-group am-form-file">
<label class="block">公告内容<span class="fs-12 fw-100 cr-999">(空则不显示)</span></label>
<label class="block">公告内容<span class="am-form-group-label-tips">空则不显示</span></label>
<textarea rows="3" name="content" class="am-radius am-field-valid" placeholder="公告内容" data-validation-message="请填写公告内容">{{if !empty($data['content'])}}{{$data.content}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>是否全局<span class="fs-12 fw-100 cr-999">(默认首页)</span></label>
<label>是否全局<span class="am-form-group-label-tips">默认首页</span></label>
<div>
{{foreach $is_whether_list as $v}}
<label class="am-radio-inline m-r-10">
@ -27,7 +27,7 @@
</div>
<div class="am-form-group">
<label>有效时间<span class="fs-12 fw-100 cr-999">(留空则不限制)</span></label>
<label>有效时间<span class="am-form-group-label-tips">留空则不限制</span></label>
<div class="form-date">
<input type="text" autocomplete="off" name="time_start" class="Wdate am-radius" placeholder="起始时间" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd HH:mm:ss'})" {{if !empty($data['time_start'])}}value="{{$data.time_start}}"{{/if}}/>
<span>~</span>

View File

@ -11,12 +11,12 @@
</legend>
<div class="am-form-group am-form-file">
<label class="block">公告内容<span class="fs-12 fw-100 cr-999">(空则不显示)</span></label>
<label class="block">公告内容<span class="am-form-group-label-tips">空则不显示</span></label>
<textarea rows="3" name="content" class="am-radius am-field-valid" placeholder="公告内容" data-validation-message="请填写公告内容">{{if !empty($data['content'])}}{{$data.content}}{{/if}}</textarea>
</div>
<div class="am-form-group">
<label>有效时间<span class="fs-12 fw-100 cr-999">(留空则不限制)</span></label>
<label>有效时间<span class="am-form-group-label-tips">留空则不限制</span></label>
<div class="form-date">
<input type="text" autocomplete="off" name="time_start" class="Wdate am-radius" placeholder="起始时间" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd HH:mm:ss'})" {{if !empty($data['time_start'])}}value="{{$data.time_start}}"{{/if}}/>
<span>~</span>

View File

@ -16,7 +16,7 @@
</div>
<div class="am-form-group">
<label>是否日/次<span class="fs-12 fw-100 cr-999">(默认当日只赠送一次)</span></label>
<label>是否日/次<span class="am-form-group-label-tips">默认当日只赠送一次</span></label>
<div>
{{foreach $is_whether_list as $v}}
<label class="am-radio-inline m-r-10">
@ -27,7 +27,7 @@
</div>
<div class="am-form-group">
<label>有效时间<span class="fs-12 fw-100 cr-999">(留空则不限制)</span></label>
<label>有效时间<span class="am-form-group-label-tips">留空则不限制</span></label>
<div class="form-date">
<input type="text" autocomplete="off" name="time_start" class="Wdate am-radius" placeholder="起始时间" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd HH:mm:ss'})" {{if !empty($data['time_start'])}}value="{{$data.time_start}}"{{/if}}/>
<span>~</span>

View File

@ -30,7 +30,7 @@
</div>
</div>
<div class="items">
<label>限制终端<span class="fs-12 fw-100 cr-999">(留空则全部)</span></label>
<label>限制终端<span class="am-form-group-label-tips">留空则全部</span></label>
<div>
{{if !empty($data['limit_terminal_text'])}}
{{$data.limit_terminal_text}}

View File

@ -11,7 +11,7 @@
</legend>
<div class="am-form-group">
<label>限制终端<span class="fs-12 fw-100 cr-999">(留空则全部)</span></label>
<label>限制终端<span class="am-form-group-label-tips">留空则全部</span></label>
<select name="limit_terminal" class="am-radius c-p chosen-select" multiple="multiple" minchecked="1" data-placeholder="可选择..." data-validation-message="至少选择一个限制终端">
{{foreach :lang('common_platform_type') as $v}}
<option value="{{$v.value}}" {{if isset($data['limit_terminal']) and in_array($v['value'], $data['limit_terminal'])}}selected{{/if}}>{{$v.name}}</option>

View File

@ -132,7 +132,7 @@ class AnswerService
if(!empty($params['keywords']))
{
$where[] = ['name|tel|content', 'like', '%'.$params['keywords'].'%'];
$where[] = ['name|tel|title|content', 'like', '%'.$params['keywords'].'%'];
}
// 是否更多条件

View File

@ -11,6 +11,7 @@
namespace app\service;
use think\Db;
use think\facade\Hook;
/**
* 导航服务层
@ -22,7 +23,7 @@ use think\Db;
class NavigationService
{
/**
* 获取首页导航
* 获取导航
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
@ -30,11 +31,12 @@ class NavigationService
* @desc description
* @param [array] $params [输入参数]
*/
public static function Home($params = [])
public static function Nav($params = [])
{
// 读取缓存数据
$header = cache(config('shopxo.cache_common_home_nav_header_key'));
$footer = cache(config('shopxo.cache_common_home_nav_footer_key'));
$header = [];
// 导航模型
$field = array('id', 'pid', 'name', 'url', 'value', 'data_type', 'is_new_window_open');
@ -50,6 +52,15 @@ class NavigationService
$v['items'] = self::NavDataDealWith(Db::name('Navigation')->field($field)->where(array('nav_type'=>'header', 'is_show'=>1, 'pid'=>$v['id']))->order('sort')->select());
}
}
// 大导航钩子
$hook_name = 'plugins_service_navigation_header_handle';
$ret = Hook::listen($hook_name, [
'hook_name' => $hook_name,
'is_backend' => false,
'params' => &$params,
'header' => &$header,
]);
cache(config('shopxo.cache_common_home_nav_header_key'), $header);
}
@ -57,9 +68,28 @@ class NavigationService
if(empty($footer))
{
$footer = self::NavDataDealWith(Db::name('Navigation')->field($field)->where(array('nav_type'=>'footer', 'is_show'=>1))->order('sort')->select());
if(!empty($footer))
{
foreach($footer as &$v)
{
$v['items'] = self::NavDataDealWith(Db::name('Navigation')->field($field)->where(array('nav_type'=>'footer', 'is_show'=>1, 'pid'=>$v['id']))->order('sort')->select());
}
}
// 底部导航钩子
$hook_name = 'plugins_service_navigation_footer_handle';
$ret = Hook::listen($hook_name, [
'hook_name' => $hook_name,
'is_backend' => false,
'params' => &$params,
'footer' => &$footer,
]);
cache(config('shopxo.cache_common_home_nav_footer_key'), $footer);
}
//print_r($header);
return [
'header' => $header,
'footer' => $footer,

View File

@ -0,0 +1,56 @@
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2019 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace app\service;
/**
* seo服务层
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class SeoService
{
/**
* 获取浏览器seo标题
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-03-11
* @desc description
* @param [string] $title [标题]
* @param [int] $type [模式0 使用站点名称, 模式1 使用SEO名称]
* @return [string] [浏览器seo标题]
*/
public static function BrowserSeoTitle($title, $type = 0)
{
// 标题为空则取seo标题
if(empty($title))
{
return MyC('home_seo_site_title');
}
// 模式
switch($type)
{
// 模式0 使用站点名称
case 0 :
return $title.' - '.MyC('home_site_name');
break;
// 模式1 或 默认使用标题加seo名称
case 1 :
default :
return $title.' - '.MyC('home_seo_site_title');
}
}
}
?>

View File

@ -68,5 +68,9 @@ return array (
array (
0 => 'app\\plugins\\usernotloginhidegoodsprice\\Hook',
),
'plugins_service_navigation_header_handle' =>
array (
0 => 'app\\plugins\\answers\\Hook',
),
);
?>

View File

@ -18,4 +18,9 @@
}
@media only screen and (max-width: 321px) {
.view-operation button { margin: 2px 0px; }
}
}
/**
* 列表
*/
table.am-table .reply-content { max-width: 200px; }

View File

@ -59,7 +59,7 @@
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
margin-top: 10px;
min-height: 32px;
min-height: 36px;
line-height: 16px;
font-weight: 300;
color: #b3b3b3;

View File

@ -79,8 +79,7 @@ iframe { width: 100%; height: 100%; border: 0; }
background: #f6f9fc;
}
form.am-form .am-form-group, .plug-images-list, .goods-specifications, .content-app-items, .plug-file-upload-view {
border-bottom: 1px dashed transparent;
background: linear-gradient(white,white) padding-box, repeating-linear-gradient(-45deg, #ccc 0, #ccc 0.25em, white 0, white 0.5em);
border-bottom: 1px dashed #ccc;
padding: 10px 20% 10px 5px;
}
.am-popup form.am-form .am-form-group {

View File

@ -26,7 +26,7 @@ button { outline: none; }
.am-form select, .am-form textarea, .am-form input[type="text"], .am-form input[type="password"], .am-form input[type="datetime"], .am-form input[type="datetime-local"], .am-form input[type="date"], .am-form input[type="month"], .am-form input[type="time"], .am-form input[type="week"], .am-form input[type="number"], .am-form input[type="email"], .am-form input[type="url"], .am-form input[type="search"], .am-form input[type="tel"], .am-form input[type="color"], .am-form-field {
font-size: 12px;
}
.am-input-group-sm > .am-input-group-btn > .am-btn {
.am-input-group-sm > .am-input-group-btn > .am-btn, .am-input-group-sm > .am-form-field {
height: 28px;
font-size: 12px !important;
}
@ -475,11 +475,15 @@ background:url(../images/ibar_sprites.png) no-repeat;background-position:0px -23
.friendship-list ul li:not(:last-child) {
margin-right: 10px;
}
.friendship-list ul li:not(:last-child) a {
border-right: 1px solid #d4d4d4;
padding-right: 10px;
}
@media only screen and (max-width:1025px) {
.friendship-list {
padding: 0 5px;
}
}
/**
@ -491,9 +495,6 @@ background:url(../images/ibar_sprites.png) no-repeat;background-position:0px -23
padding-left: 0px;
padding-right: 0px;
}
.friendship-list {
padding: 0 5px;
}
}
/**

View File

@ -1,5 +1,10 @@
.plugins-answers .am-list-news-hd {
font-weight: 500;
padding-top: 10px;
padding-bottom: 2px;
}
.plugins-answers .answers-goods .am-list-news-hd {
padding-bottom: 0;
}
.plugins-answers .am-gallery-bordered .am-gallery-item {
box-shadow: none;
@ -33,8 +38,20 @@
border-color: #F44336;
font-size: 16px;
}
.plugins-answers .answers-btn-list, .plugins-answers .am-list-news-bd .am-list {
margin-bottom: 10px;
}
.plugins-answers .am-input-group-sm > .am-input-group-btn > .am-btn, .plugins-answers .am-input-group-sm > .am-form-field {
height: 32px;
}
.plugins-answers .am-gallery-bordered .am-gallery-title {
font-size: 12px;
}
@media only screen and (min-width:640px) {
.plugins-answers .am-u-md-8, .plugins-answers .am-gallery {
padding: 0;
}
.plugins-answers .am-gallery-bordered .am-gallery-item:hover {
-webkit-box-shadow: 0px 12px 12px -10px rgba(0,0,0,.4);
box-shadow: 0px 12px 12px -10px rgba(0,0,0,.4);
@ -47,48 +64,42 @@
color: #d2364c;
text-decoration: underline;
}
.plugins-answers .answers-top, .plugins-answers .answers-middle-banner, .plugins-answers .answers-goods {
.plugins-answers .answers-top, .plugins-answers .answers-middle-banner {
margin-top: 10px;
overflow: hidden;
}
.plugins-answers .answers-slider, .plugins-answers .answers-middle-list, .plugins-answers .answers-goods .am-gallery {
padding: 0;
}
.plugins-answers .answers-sidebar, .plugins-answers .answers-goods {
padding-right: 1px;
}
.plugins-answers .am-list-news-default {
margin: 0;
}
.plugins-answers .answers-sidebar .am-list-news-hd, .plugins-answers .answers-goods .am-list-news-hd {
padding-top: 0;
}
.plugins-answers .answers-middle-list .am-list-news-hd {
padding-top: 10px;
}
.plugins-answers .answers-sidebar .am-list-news-bd .am-list {
margin-bottom: 10px;
}
.plugins-answers .answers-goods .am-list-news-hd {
padding-bottom: 5px;
}
.plugins-answers .answers-btn-list .am-btn {
margin-bottom: 10px;
}
@media only screen and (max-width:1025px) {
.plugins-answers {
padding: 0 5px;
}
}
@media only screen and (max-width:640px) {
.plugins-answers .answers-middle-list, .plugins-answers .answers-goods .am-gallery {
.plugins-answers {
padding: 0 5px;
}
.plugins-answers .am-u-md-8, .plugins-answers .am-u-md-4, .plugins-answers .am-gallery {
padding: 0;
}
.plugins-answers .answers-sidebar .am-list-news-default {
.plugins-answers .am-list-news-default {
margin: 0;
}
.plugins-answers .answers-middle-banner {
padding: 0 10px;
.plugins-answers .answers-slider {
margin-bottom: 10px;
}
.plugins-answers .answers-btn-list .am-btn {
margin-top: 15px;
.plugins-answers .am-list-news-hd {
padding-bottom: 5px;
}
}
@ -120,8 +131,9 @@
background: #f2fff1;
}
.plugins-answers-detail h2 {
margin-bottom: 5px;
font-weight: 500;
margin-bottom: 5px;
font-size: 16px;
}
.plugins-answers-detail .base .reply-content {
margin-top: 5px;

View File

@ -83,7 +83,4 @@ Route::get('user'.$ds.'order'.$ds.'comments'.$ds.':id', 'index/order/comments');
// 用户收藏/商品
Route::rule('user'.$ds.'favor'.$ds.'goods', 'index/userfavor/goods', 'GET|POST');
// 插件首页
Route::get('plugins'.$ds.':pluginsname'.$ds.':pluginscontrol'.$ds.':pluginsaction', 'index/plugins/index');
?>