mirror of
https://gitee.com/zongzhige/shopxo.git
synced 2024-12-02 11:59:16 +08:00
问答系统增强版
This commit is contained in:
parent
01fecfb60a
commit
d8f9eaf90f
@ -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();
|
||||
|
@ -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>
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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']);
|
||||
|
@ -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)))]));
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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 {
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
?>
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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"
|
||||
]
|
||||
}
|
||||
}
|
@ -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>
|
||||
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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">更多 »</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">更多 »</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="{}">
|
||||
|
@ -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">更多 »</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">更多 »</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">更多 »</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="{}">
|
||||
|
17
application/plugins/view/answers/index/operation.html
Normal file
17
application/plugins/view/answers/index/operation.html
Normal 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>
|
117
application/plugins/view/answers/index/search.html
Normal file
117
application/plugins/view/answers/index/search.html
Normal 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">更多 »</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">更多 »</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 -->
|
@ -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">
|
||||
|
@ -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>
|
||||
|
@ -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">
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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}}
|
||||
|
@ -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>
|
||||
|
@ -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'].'%'];
|
||||
}
|
||||
|
||||
// 是否更多条件
|
||||
|
@ -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,
|
||||
|
56
application/service/SeoService.php
Normal file
56
application/service/SeoService.php
Normal 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');
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
@ -68,5 +68,9 @@ return array (
|
||||
array (
|
||||
0 => 'app\\plugins\\usernotloginhidegoodsprice\\Hook',
|
||||
),
|
||||
'plugins_service_navigation_header_handle' =>
|
||||
array (
|
||||
0 => 'app\\plugins\\answers\\Hook',
|
||||
),
|
||||
);
|
||||
?>
|
@ -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; }
|
@ -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;
|
||||
|
@ -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 {
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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;
|
||||
|
@ -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');
|
||||
?>
|
Loading…
Reference in New Issue
Block a user