Merge branch 'dev' of https://gitea.f2b211.com/jsasg/orico-official-website into dev
This commit is contained in:
@@ -39,7 +39,11 @@ class Article
|
||||
->language(request()->lang_id)
|
||||
->where(function($query) use($param) {
|
||||
if (isset($param['category_id'])) {
|
||||
$query->where('category_id', '=', $param['category_id']);
|
||||
if (str_contains($param['category_id'], ',') || is_array($param['category_id'])) {
|
||||
$query->whereIn('category_id', $param['category_id']);
|
||||
} else {
|
||||
$query->where('category_id', '=', $param['category_id']);
|
||||
}
|
||||
}
|
||||
})
|
||||
->withSearch(['title', 'release_time'], [
|
||||
@@ -55,7 +59,8 @@ class Article
|
||||
'category',
|
||||
'category_id'
|
||||
])
|
||||
->bindAttr('category', ['category_name' => 'name']);
|
||||
->bindAttr('category', ['category_name' => 'name'])
|
||||
->each(fn($item) => $item->image = thumb($item->image));
|
||||
|
||||
return success('获取成功', $article);
|
||||
}
|
||||
|
||||
@@ -39,7 +39,8 @@ class ArticleTrash
|
||||
'list_rows' => $param['size']
|
||||
])
|
||||
->hidden(['category_id', 'category'])
|
||||
->bindAttr('category', ['category_name' => 'name']);
|
||||
->bindAttr('category', ['category_name' => 'name'])
|
||||
?->each(fn($item) => $item->image = thumb($item->image));
|
||||
|
||||
return success('获取成功', $data);
|
||||
}
|
||||
|
||||
@@ -48,7 +48,8 @@ class Attachment
|
||||
'page' => $params['page']
|
||||
])
|
||||
->bindAttr('category', ['category_name'])
|
||||
->hidden(['category_id', 'category']);
|
||||
->hidden(['category_id', 'category'])
|
||||
?->each(fn($item) => $item->image = thumb($item->image));
|
||||
|
||||
return success('获取成功', $attachments);
|
||||
}
|
||||
|
||||
@@ -46,7 +46,8 @@ class AttachmentTrash
|
||||
'page' => $params['page']
|
||||
])
|
||||
->bindAttr('category', ['category_name'])
|
||||
->hidden(['category_id', 'category']);
|
||||
->hidden(['category_id', 'category'])
|
||||
?->each(fn($item) => $item->image = thumb($item->image));
|
||||
|
||||
return success('获取成功', $attachments);
|
||||
}
|
||||
|
||||
@@ -33,13 +33,17 @@ class BannerItem
|
||||
'item.sort',
|
||||
'item.status',
|
||||
'item.created_at',
|
||||
'banner.name' => 'banner_name'
|
||||
'bnr.name' => 'banner_name'
|
||||
])
|
||||
->join('sys_banner banner', 'banner.id = item.banner_id')
|
||||
->where('banner.language_id', '=', request()->lang_id)
|
||||
->join('sys_banner bnr', 'bnr.id = item.banner_id')
|
||||
->where('bnr.language_id', '=', request()->lang_id)
|
||||
->where(function($query) use($param){
|
||||
if (!empty($param['banner_id'])) {
|
||||
$query->where('item.banner_id', '=', $param['banner_id']);
|
||||
if (is_array($param['banner_id']) || str_contains($param['banner_id'], ',')) {
|
||||
$query->whereIn('item.banner_id', $param['banner_id']);
|
||||
} else {
|
||||
$query->where('item.banner_id', '=', $param['banner_id']);
|
||||
}
|
||||
}
|
||||
if (!empty($param['title'])) {
|
||||
$query->where('item.title', 'like', "%{$param['title']}%");
|
||||
@@ -60,7 +64,8 @@ class BannerItem
|
||||
->paginate([
|
||||
'list_rows' => $param['size'],
|
||||
'page' => $param['page']
|
||||
]);
|
||||
])
|
||||
->each(fn($item) => $item->image = thumb($item->image));
|
||||
|
||||
return success('获取成功', $banner_items);
|
||||
}
|
||||
@@ -76,6 +81,7 @@ class BannerItem
|
||||
'updated_at',
|
||||
'deleted_at'
|
||||
])
|
||||
->append(['rel_prod_cate_id', 'rel_prod_cate_name']) // 绑定产品分类关联模型中字段到父模型中
|
||||
->find($id);
|
||||
if (empty($banner_item)) {
|
||||
return error('横幅不存在');
|
||||
@@ -282,7 +288,11 @@ class BannerItem
|
||||
->where('banner.language_id', '=', request()->lang_id)
|
||||
->where(function($query) use($param){
|
||||
if (!empty($param['banner_id'])) {
|
||||
$query->where('item.banner_id', '=', $param['banner_id']);
|
||||
if (is_array($param['banner_id']) || str_contains($param['banner_id'], ',')) {
|
||||
$query->whereIn('item.banner_id', $param['banner_id']);
|
||||
} else {
|
||||
$query->where('item.banner_id', '=', $param['banner_id']);
|
||||
}
|
||||
}
|
||||
if (!empty($param['title'])) {
|
||||
$query->where('item.title', 'like', "%{$param['title']}%");
|
||||
|
||||
@@ -38,7 +38,8 @@ class Faq
|
||||
->paginate([
|
||||
'list_rows' => $param['size'],
|
||||
'page' => $param['page'],
|
||||
]);
|
||||
])
|
||||
?->each(fn($item) => $item->image = thumb($item->image));
|
||||
|
||||
return success('获取成功', $faqs);
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ declare (strict_types = 1);
|
||||
namespace app\admin\controller\v1;
|
||||
|
||||
use app\admin\model\v1\SysOperateLog;
|
||||
use app\admin\model\v1\SysUserModel;
|
||||
|
||||
/**
|
||||
* 操作日志控制器
|
||||
@@ -21,11 +22,15 @@ class OperateLog
|
||||
'size/d'
|
||||
]);
|
||||
|
||||
$logs = SysOperateLog::hasWhere('user', function($query) use($param) {
|
||||
$logs = SysOperateLog::field([
|
||||
'SysOperateLog.*',
|
||||
'SysUserModel.username'
|
||||
])
|
||||
->hasWhere('user', function($query) use($param) {
|
||||
if (!empty($param['operator'])) {
|
||||
$query->where('username', 'like', "{$param['operator']}");
|
||||
$query->where('username', 'like', "%{$param['operator']}%");
|
||||
}
|
||||
$query->field(['id', 'username']);
|
||||
$query->withTrashed()->field(['id', 'username']);
|
||||
})
|
||||
->withSearch(['title', 'created_at'], [
|
||||
'title' => $param['title'] ?? null,
|
||||
@@ -36,7 +41,6 @@ class OperateLog
|
||||
'list_rows' => $param['size'] ?? 10,
|
||||
'page' => $param['page'] ?? 1,
|
||||
])
|
||||
->bindAttr('user', ['username'])
|
||||
->hidden(['user_id', 'user']);
|
||||
|
||||
return success('获取成功', $logs);
|
||||
|
||||
@@ -63,7 +63,8 @@ class Product
|
||||
'page' => $param['page'],
|
||||
])
|
||||
->bindAttr('category', ['category_name' => 'name'])
|
||||
->hidden(['category_id', 'category']);
|
||||
->hidden(['category_id', 'category'])
|
||||
?->each(fn($item) => $item->cover_image = thumb($item->cover_image));
|
||||
|
||||
return success('获取成功', $products);
|
||||
}
|
||||
|
||||
@@ -55,7 +55,8 @@ class ProductTrash
|
||||
'page' => $param['page'],
|
||||
])
|
||||
->bindAttr('category', ['category_name' => 'name'])
|
||||
->hidden(['category_id', 'category']);
|
||||
->hidden(['category_id', 'category'])
|
||||
?->each(fn($item) => $item->cover_image = thumb($item->cover_image));
|
||||
|
||||
return success('获取成功', $products);
|
||||
}
|
||||
|
||||
@@ -85,6 +85,10 @@ class ArticleModel extends ArticleBaseModel
|
||||
// 分类查询
|
||||
public function scopeCategory($query, $value)
|
||||
{
|
||||
if (is_array($value) || str_contains($value, ',')) {
|
||||
$query->whereIn('category_id', $value);
|
||||
return;
|
||||
}
|
||||
$query->where('category_id', '=', $value);
|
||||
}
|
||||
public function scopeCategoryNullable($query, $value)
|
||||
@@ -92,6 +96,10 @@ class ArticleModel extends ArticleBaseModel
|
||||
if (is_null($value)) {
|
||||
return;
|
||||
}
|
||||
if (is_array($value) || str_contains($value, ',')) {
|
||||
$query->whereIn('category_id', $value);
|
||||
return;
|
||||
}
|
||||
$query->where('category_id', '=', $value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,6 +58,10 @@ class AttachmentModel extends AttachmentBaseModel
|
||||
public function scopeCategoryId($query, $value)
|
||||
{
|
||||
if (empty($value)) return;
|
||||
if (is_array($value) || str_contains($value, ',')) {
|
||||
$query->whereIn('category_id', $value);
|
||||
return;
|
||||
}
|
||||
$query->where('category_id', '=', $value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,10 +65,18 @@ class ProductModel extends ProductBaseModel
|
||||
if (is_null($value)) {
|
||||
return;
|
||||
}
|
||||
if (is_array($value) || str_contains($value, ',')) {
|
||||
$query->whereIn('category_id', $value);
|
||||
return;
|
||||
}
|
||||
$query->where('category_id', '=', $value);
|
||||
}
|
||||
public function scopeCategory($query, $value)
|
||||
{
|
||||
if (is_array($value) || str_contains($value, ',')) {
|
||||
$query->whereIn('category_id', $value);
|
||||
return;
|
||||
}
|
||||
$query->where('category_id', '=', $value);
|
||||
}
|
||||
|
||||
|
||||
@@ -17,8 +17,6 @@ class SysBannerItemModel extends SysBannerItemBaseModel
|
||||
// 软删除字段
|
||||
protected $deleteTime = 'deleted_at';
|
||||
|
||||
// 绑定产品分类关联模型中字段到父模型
|
||||
protected $append = ['rel_prod_cate_id', 'rel_prod_cate_name'];
|
||||
// 要隐藏的字段或关联模型数据字段
|
||||
protected $hidden = ['prodMapping'];
|
||||
|
||||
@@ -62,7 +60,7 @@ class SysBannerItemModel extends SysBannerItemBaseModel
|
||||
}
|
||||
if (is_array($value)) {
|
||||
if (count($value) > 1) {
|
||||
$query->whereBetweenTime ('created_at', $value[0], $value[1]);
|
||||
$query->whereBetweenTime('created_at', $value[0], $value[1]);
|
||||
} else {
|
||||
$query->whereTime('created_at', '>=', $value[0]);
|
||||
}
|
||||
@@ -73,6 +71,10 @@ class SysBannerItemModel extends SysBannerItemBaseModel
|
||||
public function scopeBannerId($query, $value)
|
||||
{
|
||||
if (is_null($value)) return;
|
||||
if (is_array($value) || str_contains($value, ',')) {
|
||||
$query->whereIn('banner_id', $value);
|
||||
return;
|
||||
}
|
||||
$query->where('banner_id', '=', $value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,6 +62,10 @@ class VideoModel extends VideoBaseModel
|
||||
if (empty($value)) {
|
||||
return;
|
||||
}
|
||||
if (is_array($value) || str_contains($value, ',')) {
|
||||
$query->whereIn('category_id', $value);
|
||||
return;
|
||||
}
|
||||
$query->where('category_id', '=', $value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,4 +102,46 @@ if (!function_exists('array_to_tree')) {
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('array_flatten')) {
|
||||
/**
|
||||
* 将多维数组转换为一维数组
|
||||
* @param array $array
|
||||
* @return array
|
||||
*/
|
||||
function array_flatten(array $array, int $depth = 1): array
|
||||
{
|
||||
return \think\helper\Arr::flatten($array, $depth);
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('thumb')) {
|
||||
/**
|
||||
* 获取缩略图
|
||||
* @param string $url 图片地址
|
||||
* @return string
|
||||
*/
|
||||
function thumb(?string $url): string
|
||||
{
|
||||
if (empty($url)) {
|
||||
return '';
|
||||
}
|
||||
if (
|
||||
str_contains($url, '_thumb') ||
|
||||
\think\helper\Str::startsWith($url, ['http://', 'https://']) ||
|
||||
!\think\helper\Str::endsWith($url, ['.png', '.jpg', '.jpeg', '.gif', '.tif', '.svg', '.webp', '.bmp'])
|
||||
) {
|
||||
return $url;
|
||||
}
|
||||
|
||||
$idx = mb_strripos($url, '.', 0, 'utf-8');
|
||||
if ($idx === false) {
|
||||
return $url;
|
||||
}
|
||||
|
||||
$len = mb_strlen($url, 'utf-8');
|
||||
|
||||
return mb_substr($url, 0, $idx, 'utf-8') . '_thumb' . mb_substr($url, $idx, $len - $idx, 'utf-8');
|
||||
}
|
||||
}
|
||||
@@ -71,36 +71,6 @@ if (!function_exists('style')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('thumb')) {
|
||||
/**
|
||||
* 获取缩略图
|
||||
* @param string $url 图片地址
|
||||
* @return string
|
||||
*/
|
||||
function thumb(string $url): string
|
||||
{
|
||||
if (empty($url)) {
|
||||
return '';
|
||||
}
|
||||
if (
|
||||
str_contains($url, '_thumb') ||
|
||||
\think\helper\Str::startsWith($url, ['http://', 'https://']) ||
|
||||
!\think\helper\Str::endsWith($url, ['.png', '.jpg', '.jpeg', '.gif', '.tif', '.svg', '.webp', '.bmp'])
|
||||
) {
|
||||
return $url;
|
||||
}
|
||||
|
||||
$idx = mb_strripos($url, '.', 0, 'utf-8');
|
||||
if ($idx === false) {
|
||||
return $url;
|
||||
}
|
||||
|
||||
$len = mb_strlen($url, 'utf-8');
|
||||
|
||||
return mb_substr($url, 0, $idx, 'utf-8') . '_thumb' . mb_substr($url, $idx, $len - $idx, 'utf-8');
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('get_path_from_img_tag')) {
|
||||
/**
|
||||
* 从img标签中获取图片路径
|
||||
@@ -128,7 +98,8 @@ if (!function_exists('lang_i18n')) {
|
||||
* @param string $lang 语言标识
|
||||
* @return string
|
||||
*/
|
||||
function lang_i18n(string $name, array $vars = [], string $lang = '') {
|
||||
function lang_i18n(string $name, array $vars = [], string $lang = ''): string
|
||||
{
|
||||
if (is_null($name)) {
|
||||
return '';
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ class AboutUs extends Common
|
||||
->where('status', '=', 1)
|
||||
->order(['sort' => 'asc', 'id' => 'desc']);
|
||||
}])
|
||||
->atPlatform(request()->from)
|
||||
->uniqueLabel([
|
||||
"BANNER_680744b1d0000",
|
||||
"BANNER_680744e7cacb3",
|
||||
@@ -62,7 +63,8 @@ class AboutUs extends Common
|
||||
// 获取品牌故事banner
|
||||
$banners = SysBannerItemModel::hasWhere('banner', [
|
||||
'language_id' => $this->lang_id,
|
||||
'unique_label' => 'BANNER_67ff632a5f7aa'
|
||||
'unique_label' => 'BANNER_67ff632a5f7aa',
|
||||
'at_platform' => request()->from,
|
||||
])
|
||||
->type('image')
|
||||
->enabled(true)
|
||||
@@ -87,6 +89,7 @@ class AboutUs extends Common
|
||||
$banner = SysBannerModel::with(['items' => function($query) {
|
||||
$query->where('status', '=', 1)->order(['sort' => 'asc', 'id' => 'desc']);
|
||||
}])
|
||||
->atPlatform(request()->from)
|
||||
->uniqueLabel([
|
||||
'BANNER_67ff786dc9c8d',
|
||||
'BANNER_67ff7ef1354cf',
|
||||
@@ -124,6 +127,7 @@ class AboutUs extends Common
|
||||
->where('status', '=', 1)
|
||||
->order(['sort' => 'asc', 'id' => 'desc']);
|
||||
}])
|
||||
->atPlatform(request()->from)
|
||||
->uniqueLabel([
|
||||
"BANNER_68075a636e648",
|
||||
"BANNER_68075bf4dd0f5",
|
||||
@@ -157,6 +161,7 @@ class AboutUs extends Common
|
||||
->where('status', '=', 1)
|
||||
->order(['sort' => 'asc', 'id' => 'desc']);
|
||||
}])
|
||||
->atPlatform(request()->from)
|
||||
->uniqueLabel([
|
||||
"BANNER_6806f5f19c3d6",
|
||||
"BANNER_6806f609b9fe9",
|
||||
|
||||
@@ -32,10 +32,12 @@ class Article extends Common
|
||||
// 获取banner焦点图
|
||||
$banner = SysBannerItemModel::hasWhere('banner', [
|
||||
'language_id' => $this->lang_id,
|
||||
'unique_label' => 'BANNER_67f9fc71e27db'
|
||||
'unique_label' => 'BANNER_67f9fc71e27db',
|
||||
'at_platform' => request()->from
|
||||
])
|
||||
->type('image')
|
||||
->visible(['id', 'title', 'image', 'link'])
|
||||
->enabled()
|
||||
->find();
|
||||
View::assign('banner', $banner);
|
||||
|
||||
@@ -58,17 +60,21 @@ class Article extends Common
|
||||
'id',
|
||||
'title',
|
||||
'desc',
|
||||
'image'
|
||||
'image',
|
||||
'release_time'
|
||||
])
|
||||
->withSearch(['title'], ['title' => $param['keywords']??null])
|
||||
->category($param['cid']??$categorys[0]['id'])
|
||||
->where('release_time', '<=', date('Y-m-d H:i:s'))
|
||||
->order(['sort' => 'asc', 'release_time' => 'desc', 'id' => 'desc'])
|
||||
->paginate([
|
||||
'list_rows' => $param['size'],
|
||||
'page' => $param['page'],
|
||||
'query' => request()->param([
|
||||
'cid',
|
||||
'keywords',
|
||||
]) // 保留查询参数,防止分页丢失
|
||||
]);
|
||||
}
|
||||
}
|
||||
View::assign('articles', $articles??[]);
|
||||
|
||||
return View::fetch('index');
|
||||
@@ -123,12 +129,14 @@ class Article extends Common
|
||||
|
||||
// 验证字段
|
||||
$validate = Validate::rule([
|
||||
'name' => 'max:64',
|
||||
'email' => 'email'
|
||||
'name' => 'require|max:64',
|
||||
'email' => 'require|email'
|
||||
])
|
||||
->message([
|
||||
'name.max' => '姓名不能超过64个字符',
|
||||
'email' => '请输入正确的邮箱'
|
||||
'name.require' => '姓名不能为空',
|
||||
'name.max' => '姓名不能超过:rule个字符',
|
||||
'email.require' => '邮箱不能为空',
|
||||
'email.email' => '邮箱格式不正确'
|
||||
]);
|
||||
if (!$validate->check($post)) {
|
||||
return error($validate->getError());
|
||||
@@ -142,9 +150,9 @@ class Article extends Common
|
||||
]);
|
||||
$ret = ArticleLeaveMessageModel::create($data);
|
||||
if ($ret->isEmpty()) {
|
||||
return error('留言提交失败');
|
||||
return error(lang('留言提交失败'));
|
||||
}
|
||||
|
||||
return success('留言提交成功');
|
||||
return success(lang('留言提交成功'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,8 @@ class Faq extends Common
|
||||
// 获取banner焦点图
|
||||
$banner = SysBannerItemModel::hasWhere('banner', [
|
||||
'language_id' => $this->lang_id,
|
||||
'unique_label' => 'BANNER_67fa37f30e151'
|
||||
'unique_label' => 'BANNER_67fa37f30e151',
|
||||
'at_platform' => request()->from
|
||||
])
|
||||
->type('image')
|
||||
->visible(['id', 'title', 'image', 'link'])
|
||||
|
||||
@@ -253,7 +253,11 @@ class Product extends Common
|
||||
];
|
||||
}
|
||||
foreach ($categorys_data as $k => $v) {
|
||||
$categorys_data[$k]['products'] = $products_map[$v['id']] ?? [];
|
||||
if (!isset($products_map[$v['id']])) {
|
||||
unset($categorys_data[$k]);
|
||||
continue;
|
||||
}
|
||||
$categorys_data[$k]['products'] = $products_map[$v['id']];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,10 @@ class TopicNas extends Common
|
||||
{
|
||||
// 获取国家/语言列表
|
||||
$languages = $this->getLanguages();
|
||||
// 输出国家/语言列表
|
||||
if (request()->isMobile()) {
|
||||
View::assign('header_languages', $languages);
|
||||
}
|
||||
|
||||
// 获取当前语言
|
||||
$current_language = $this->getCurrentLanguage($languages);
|
||||
@@ -61,8 +65,10 @@ class TopicNas extends Common
|
||||
$nas_software = [];
|
||||
// 获取banner数据
|
||||
$banners = SysBannerModel::with(['items' => function($query) {
|
||||
$query->withoutField(['sort', 'created_at', 'updated_at', 'deleted_at']);
|
||||
$query->withoutField(['sort', 'created_at', 'updated_at', 'deleted_at'])
|
||||
->order(['sort' => 'asc', 'id' => 'desc']);
|
||||
}])
|
||||
->atPlatform(request()->from)
|
||||
->uniqueLabel([
|
||||
'BANNER_680f156a805a8',
|
||||
'BANNER_680f15ca5482f',
|
||||
|
||||
@@ -15,6 +15,8 @@ return [
|
||||
'提交失败' => 'fail',
|
||||
'信息已成功提交!' => 'Add Success!',
|
||||
'信息提交失败!' => 'Add Fail!',
|
||||
'留言提交失败' => 'Message submit failed',
|
||||
'留言提交成功' => 'Message submit success',
|
||||
'当前选定语言的采购可选品类配置出错' => 'Current language configuration of purchase optional categories is incorrect',
|
||||
|
||||
// 首页
|
||||
@@ -29,6 +31,19 @@ return [
|
||||
'客服团队的工作时间:周一到周五,早9点到晚6点 平均应答时间:24小时内' => 'Our customer support is available Monday to Friday: 9am-6:00pm. Average answer time: 24h',
|
||||
],
|
||||
|
||||
// 文章详情页
|
||||
'article/detail' => [
|
||||
'分享' => 'SHARE',
|
||||
'留言' => 'Leave a Reply',
|
||||
'名称' => 'Name',
|
||||
'电子邮箱' => 'Email',
|
||||
'您的电子邮件地址不会被公开' => 'Your email address will not be pulished.',
|
||||
'留言内容' => 'Comment',
|
||||
'提交留言' => 'POST COMMENT',
|
||||
'你可能还喜欢' => 'Recommended for you',
|
||||
'链接复制成功' => 'Link copied successfully',
|
||||
],
|
||||
|
||||
// 产品分类
|
||||
'product/category' => [
|
||||
'查看全部' => 'View All',
|
||||
@@ -58,6 +73,12 @@ return [
|
||||
'提交' => 'SUBMIT',
|
||||
],
|
||||
|
||||
// 常见问题
|
||||
'faq/index' => [
|
||||
'常见FQ_下载与服务_中文官网帮助信息_ORICO/奥睿科官网' => 'FAQ',
|
||||
'常见问题解答' => 'Frequently asked questions',
|
||||
],
|
||||
|
||||
// 附件下载
|
||||
'attachment/index' => [
|
||||
'软件下载' => 'Software download',
|
||||
@@ -121,4 +142,40 @@ return [
|
||||
'发送' => 'SEND',
|
||||
'成为经销商' => 'Become a Distributor',
|
||||
],
|
||||
|
||||
// 关于我们 - 品牌介绍
|
||||
'aboutus/introduction' => [
|
||||
'品牌介绍' => 'Introduction of the Brand',
|
||||
'选择我们的理由' => 'Why Choose Us',
|
||||
'为您提供专属定制服务' => 'How We Can Help with Customization',
|
||||
'对于不同的情况' => 'For Different Situation',
|
||||
],
|
||||
|
||||
// 关于我们 - 文化介绍
|
||||
'aboutus/culture' => [
|
||||
'文化介绍' => 'Culture Introduction',
|
||||
],
|
||||
|
||||
// 关于我们 - 品牌历程
|
||||
'aboutus/mileage' => [
|
||||
'ORICO荣耀' => 'Our Achievement',
|
||||
'品牌里程' => 'Brand Events',
|
||||
'品牌活动' => 'Tech Development',
|
||||
],
|
||||
|
||||
// 关于我们 - 售后政策
|
||||
'aboutus/policy' => [
|
||||
'售后政策_注意事项' => 'After-Sales Policy',
|
||||
'售后政策' => 'After-sale Policy',
|
||||
'ORICO/奥睿科商城为您提供七天包退、15天换新、1年保修、终身维护的服务承诺' => 'ORICO commits to provide 7-day Refund, 15-day Exchange, 1-year Quality Warranty. ',
|
||||
'为了保障您的合法权益,敬请关注以下信息' => 'For your own benefits, please mind the following information',
|
||||
'为了得到深圳市元创时代科技有限公司给予您的“包修、包换、包退”的权益,请您:' => 'For a smooth return and refund, quality warranty, please follow these steps:',
|
||||
'特别说明' => 'ORICO is not liable for:'
|
||||
],
|
||||
|
||||
// nas主题 - 首页
|
||||
'topicnas/index' => [
|
||||
'网络存储解决方案' => 'Network Storage Solutions',
|
||||
'配套软件' => 'Software',
|
||||
],
|
||||
];
|
||||
@@ -40,6 +40,11 @@ return [
|
||||
'链接复制成功' => 'Link copied successfully',
|
||||
],
|
||||
|
||||
// 常见问题
|
||||
'faq/index' => [
|
||||
'常见FQ_下载与服务_中文官网帮助信息_ORICO/奥睿科官网' => 'FAQ',
|
||||
],
|
||||
|
||||
// 附件页 - 软件下载
|
||||
'attachment/index' => [
|
||||
'软件和驱动程序' => 'Software and Drivers',
|
||||
@@ -153,6 +158,7 @@ return [
|
||||
|
||||
// 产品 - 产品详情页
|
||||
'product/detail' => [
|
||||
'首页' => 'Home',
|
||||
'产品详情' => 'Product Description',
|
||||
'相关产品' => 'Related Products',
|
||||
'发送查询' => 'Send Inquiry',
|
||||
|
||||
38
app/index/view/mobile/about_us/culture.html
Normal file
38
app/index/view/mobile/about_us/culture.html
Normal file
@@ -0,0 +1,38 @@
|
||||
{extend name="public/base" /}
|
||||
{block name="title"}
|
||||
{notempty name=":lang_i18n('文化介绍')"}<title>{:lang_i18n('文化介绍')}</title>{else/}{__BLOCK__}{/notempty}
|
||||
{/block}
|
||||
{block name="style"}
|
||||
<link rel="stylesheet" type="text/css" href="__CSS__/aboutus_culture.css" />
|
||||
{/block}
|
||||
{block name="main"}
|
||||
<div class="oricoEGapp">
|
||||
<!-- 内容 -->
|
||||
<div class="oricoEGapp-product">
|
||||
{notempty name="focus_image"}
|
||||
<div class="img-responsive">
|
||||
<a {notempty name="focus_image.link"}href="{$focus_image.link}"{/notempty}>
|
||||
<img src="{$focus_image.image}">
|
||||
</a>
|
||||
</div>
|
||||
{/notempty}
|
||||
<!-- 产品介绍 -->
|
||||
{notempty name="culture"}
|
||||
{volist name="culture" id="cul" offset="0" length="3"}
|
||||
<div class="m_vision">
|
||||
<div class="img-responsive "><img src="{$cul.image}"></div>
|
||||
<div class="vision-title text_left margin-top-50">{$cul.title}</div>
|
||||
<div class="vision-con text_gray text_left line-height-40 margin-top-40">{$cul.desc|raw}</div>
|
||||
</div>
|
||||
{/volist}
|
||||
<div class="m_vision">
|
||||
{volist name="culture" id="cul" offset="3"}
|
||||
<div class="img-responsive"><img src="{$cul.image}"></div>
|
||||
<div class="vision-title text_left margin-top-50">{$cul.title}</div>
|
||||
<div class="vision-con text_gray text_left line-height-40 margin-top-40">{$cul.desc|raw}</div>
|
||||
{/volist}
|
||||
</div>
|
||||
{/notempty}
|
||||
</div>
|
||||
</div>
|
||||
{/block}
|
||||
@@ -1,7 +1,58 @@
|
||||
{extend name="public/base" /}
|
||||
{block name="title"}
|
||||
{notempty name=":lang_i18n('品牌介绍')"}<title>{:lang_i18n('品牌介绍')}</title>{else/}{__BLOCK__}{/notempty}
|
||||
{/block}
|
||||
{block name="style"}
|
||||
<link rel="stylesheet" type="text/css" href="css/introduction.css" />
|
||||
<link rel="stylesheet" type="text/css" href="__CSS__/aboutus_introduction.css" />
|
||||
{/block}
|
||||
{block name="main"}
|
||||
|
||||
<div class="oricoEGapp">
|
||||
<div class="iotbpage">
|
||||
{notempty name="focus_image"}
|
||||
<img src="{$focus_image.image}" alt="" class="bdimg1">
|
||||
{/notempty}
|
||||
{notempty name="why"}
|
||||
<div class="iotb_bgw">
|
||||
<h1 class="iotbt1">{:lang_i18n('选择我们的理由')}</h1>
|
||||
<div class="iotb_part1">
|
||||
{volist name="why" id="wh"}
|
||||
<div class="iotb_p1_item" style="margin-bottom: 30px;">
|
||||
<img src="{$wh.image}" alt="" class="iotbic1">
|
||||
<p class="iotbtp1">{$wh.title}</p>
|
||||
<span class="iotbts1">{$wh.desc|raw}</span>
|
||||
</div>
|
||||
{/volist}
|
||||
</div>
|
||||
</div>
|
||||
{/notempty}
|
||||
{notempty name="service"}
|
||||
<div class="iotb_part2 iotb_part22">
|
||||
<h1 class="iotbt1">{:lang_i18n('为您提供专属定制服务')}</h1>
|
||||
<div class="fdimgs wcu_list">
|
||||
{assign name="flat_service" value=":array_flatten($service)" /}
|
||||
{volist name="flat_service" id="fs"}
|
||||
<div class="wcu_ltem">
|
||||
<img src="{$fs.image}" alt="" class="fbit">
|
||||
<span class="wcu_s1">{$fs.title}</span>
|
||||
</div>
|
||||
{/volist}
|
||||
</div>
|
||||
</div>
|
||||
{/notempty}
|
||||
{notempty name="difference"}
|
||||
<div class="iotb_part2">
|
||||
<h1 class="iotbt1">{:lang_i18n('对于不同的情况')}</h1>
|
||||
<div class="fdimgs wcu_list">
|
||||
{assign name="flat_difference" value=":array_flatten($difference)" /}
|
||||
{volist name="flat_difference" id="di"}
|
||||
<div class="wcu_ltem">
|
||||
<img src="{$di.image}" alt="" class="fbit">
|
||||
<span class="wcu_s1">{$di.title}</span>
|
||||
</div>
|
||||
{/volist}
|
||||
</div>
|
||||
</div>
|
||||
{/notempty}
|
||||
</div>
|
||||
</div>
|
||||
{/block}
|
||||
106
app/index/view/mobile/about_us/mileage.html
Normal file
106
app/index/view/mobile/about_us/mileage.html
Normal file
@@ -0,0 +1,106 @@
|
||||
{extend name="public/base"/}
|
||||
{block name="style"}
|
||||
<link rel="stylesheet" href="__CSS__/aboutus_mileage.css">
|
||||
{/block}
|
||||
{block name="main"}
|
||||
<div class="oricoEGapp">
|
||||
<!--公司里程 -->
|
||||
<div class="oricoCnLc">
|
||||
<div class="margin-top-60"></div>
|
||||
<div class="m_ach">
|
||||
<div class="img-responsive ">
|
||||
<img src="__IMAGES__/achievement.jpg">
|
||||
</div>
|
||||
<div class="title">{:lang_i18n('ORICO荣耀')}</div>
|
||||
<div class="list-num clearfix">
|
||||
{notempty name="achievement"}
|
||||
<ul>
|
||||
{volist name="achievement" id="ac"}
|
||||
<li>
|
||||
<h4 {:style(['color' => $ac['desc_txt_color']])}>{$ac.desc|raw}</h4>
|
||||
<p {:style(['color' => $ac['title_txt_color']])}>{$ac.title}</p>
|
||||
</li>
|
||||
{/volist}
|
||||
</ul>
|
||||
{/notempty}
|
||||
</div>
|
||||
</div>
|
||||
{notempty name="events"}
|
||||
<div class="m_ach-b">
|
||||
<div class="title">{:lang_i18n('品牌里程')}</div>
|
||||
</div>
|
||||
<div class="contain">
|
||||
<!-- 导航 -->
|
||||
<div class="nav">
|
||||
<div class="swiper-container gallery-thumbs">
|
||||
<div class="swiper-wrapper">
|
||||
{volist name="events" id="ev"}
|
||||
<div class="swiper-slide" {:style(['color' => $ev['title_txt_color']])}>{$ev.title}</div>
|
||||
{/volist}
|
||||
</div>
|
||||
<span class="swiper-notification" aria-live="assertive" aria-atomic="true"></span>
|
||||
</div>
|
||||
<!-- 切换按钮 -->
|
||||
<div class="swiper-button-next swiper-button-white" tabindex="0" role="button" aria-label="Next slide" aria-disabled="false">
|
||||
<img src="__IMAGES__/ach-right.webp">
|
||||
</div>
|
||||
<div class="swiper-button-prev swiper-button-white swiper-button-disabled" tabindex="0" role="button" aria-label="Previous slide" aria-disabled="true">
|
||||
<img src="__IMAGES__/ach-left.webp">
|
||||
</div>
|
||||
</div>
|
||||
<!-- 内容 -->
|
||||
<div class="swiper-container gallery-top">
|
||||
<div class="swiper-wrapper">
|
||||
{volist name="events" id="ev" key="k"}
|
||||
<div class="swiper-slide info">
|
||||
<h5 {:style(['color' => $ev['title_txt_color']])}>{$ev.title}</h5>
|
||||
<p {:style(['color' => $ev['desc_txt_color']])}>{$ev.desc|raw}</p>
|
||||
</div>
|
||||
{/volist}
|
||||
</div>
|
||||
<span class="swiper-notification" aria-live="assertive" aria-atomic="true"></span>
|
||||
</div>
|
||||
</div>
|
||||
{/notempty}
|
||||
{notempty name="development"}
|
||||
<div class="m_ch">
|
||||
<div class="m_ach-b">
|
||||
<div class="chtitle">{:lang_i18n('品牌活动')}</div>
|
||||
</div>
|
||||
{volist name="development" id="de"}
|
||||
<div class="ach-bg">
|
||||
<div class="img-responsive ">
|
||||
<img src="{$de.image}">
|
||||
</div>
|
||||
<div class="m_ch-title text_left margin-top-50">
|
||||
<img src="__IMAGES__/ach-icon.png">{$de.title}
|
||||
</div>
|
||||
<div class="m_ch-con text_gray text_left line-height-40 margin-top-40">{$de.desc|raw}</div>
|
||||
</div>
|
||||
{/volist}
|
||||
</div>
|
||||
{/notempty}
|
||||
</div>
|
||||
</div>
|
||||
{/block}
|
||||
{block name="script"}
|
||||
<script type="text/javascript">
|
||||
var galleryThumbs = new Swiper('.gallery-thumbs', {
|
||||
spaceBetween: 10,
|
||||
slidesPerView: 5,
|
||||
freeMode: true,
|
||||
watchSlidesVisibility: true,
|
||||
watchSlidesProgress: true
|
||||
})
|
||||
var galleryTop = new Swiper('.gallery-top', {
|
||||
spaceBetween: 10,
|
||||
thumbs: {
|
||||
swiper: galleryThumbs
|
||||
},
|
||||
navigation: {
|
||||
nextEl: '.swiper-button-next',
|
||||
prevEl: '.swiper-button-prev'
|
||||
}
|
||||
})
|
||||
</script>
|
||||
{/block}
|
||||
84
app/index/view/mobile/about_us/policy.html
Normal file
84
app/index/view/mobile/about_us/policy.html
Normal file
@@ -0,0 +1,84 @@
|
||||
{extend name="public/base"/}
|
||||
{block name="title"}
|
||||
<title>{:lang_i18n('售后政策_注意事项')}</title>
|
||||
{/block}
|
||||
{block name="style"}
|
||||
<link rel="stylesheet" href="__CSS__/aboutus_policy.css">
|
||||
{/block}
|
||||
{block name="main"}
|
||||
<div class="oricoEGapp">
|
||||
<!-- 内容 -->
|
||||
<div class="oricoEGapp-policy">
|
||||
{notempty name="policy.focus_image"}
|
||||
<a {notempty name="policy.focus_image.link"}href="{$policy.focus_image.link}"{/notempty}>
|
||||
<img src="{$policy.focus_image.image}" class="pl-img" />
|
||||
</a>
|
||||
{/notempty}
|
||||
<div class="m_Container">
|
||||
<strong class="textpoint">{:lang_i18n('售后政策')}</strong>
|
||||
<p class="decs">{:lang_i18n('ORICO/奥睿科商城为您提供七天包退、15天换新、1年保修、终身维护的服务承诺')}</p>
|
||||
</div>
|
||||
{notempty name="policy.banner_1"}
|
||||
{volist name="policy.banner_1" id="b1"}
|
||||
<div class="m_Container">
|
||||
<strong class="textpoint">{$b1.title}</strong>
|
||||
<div class="decs">{$b1.desc|raw}</div>
|
||||
</div>
|
||||
{/volist}
|
||||
{/notempty}
|
||||
|
||||
{notempty name="policy.banner_2"}
|
||||
{volist name="policy.banner_2" id="b2"}
|
||||
<img src="{$b2.image}" class="pl-img m-t" />
|
||||
<div class="m_Container">
|
||||
<strong class="textpoint">{$b2.title}</strong>
|
||||
<div class="decs decs-left">{$b2.desc|raw}</div>
|
||||
</div>
|
||||
{/volist}
|
||||
{/notempty}
|
||||
|
||||
{notempty name="policy.banner_3"}
|
||||
<div class="m_Container">
|
||||
<strong class="textpoint">{:lang_i18n('为了保障您的合法权益,敬请关注以下信息')}</strong>
|
||||
<p class="decs">{:lang_i18n('为了得到深圳市元创时代科技有限公司给予您的“包修、包换、包退”的权益,请您:')}</p>
|
||||
<div class="decs decs-left">
|
||||
{volist name="policy.banner_3" id="b3"}
|
||||
{$b3.title}<br/>
|
||||
{/volist}
|
||||
</div>
|
||||
</div>
|
||||
{/notempty}
|
||||
|
||||
{notempty name="policy.banner_4"}
|
||||
{volist name="policy.banner_4" id="b4"}
|
||||
<img src="{$b4.image}" class="pl-img m-t" />
|
||||
<div class="m_Container">
|
||||
<strong class="textpoint">{$b4.title}</strong>
|
||||
<div class="decs decs-left">{$b4.desc|raw}</div>
|
||||
</div>
|
||||
{/volist}
|
||||
{/notempty}
|
||||
|
||||
{notempty name="policy.banner_5"}
|
||||
<div class="m_Container">
|
||||
<strong class="textpoint">{:lang_i18n('特别说明')}</strong>
|
||||
<p class="decs decs-left">
|
||||
{volist name="policy.banner_5" id="b5" key="k"}
|
||||
{$k+1}、{$b5.title}<br/>
|
||||
{/volist}
|
||||
</p>
|
||||
</div>
|
||||
{/notempty}
|
||||
|
||||
{notempty name="policy.banner_6"}
|
||||
{volist name="policy.banner_6" id="b6"}
|
||||
<img src="{$b6.image}" class="pl-img m-t" />
|
||||
<div class="m_Container">
|
||||
<strong class="textpoint">{$b6.title}</strong>
|
||||
<div class="decs decs-left">{$b6.desc|raw}</div>
|
||||
</div>
|
||||
{/volist}
|
||||
{/notempty}
|
||||
</div>
|
||||
</div>
|
||||
{/block}
|
||||
32
app/index/view/mobile/about_us/story.html
Normal file
32
app/index/view/mobile/about_us/story.html
Normal file
@@ -0,0 +1,32 @@
|
||||
{extend name="public/base" /}
|
||||
{block name="style"}
|
||||
<link rel="stylesheet" href="__CSS__/aboutus_story.css" />
|
||||
{/block}
|
||||
{block name="main"}
|
||||
<div class="oricoEGapp">
|
||||
<!-- 内容-->
|
||||
<div class="oricoEGapp-brand">
|
||||
<div class="video-right img-responsive">
|
||||
<img src="__IMAGES__/brand-banner.webp">
|
||||
</div>
|
||||
{notempty name="banners"}
|
||||
<div class="m_brand">
|
||||
{volist name="banners" id="ba" offset="0" length="2"}
|
||||
<div class="brand_title text_left">{$ba.title}</div>
|
||||
<div class="brand-con text_gray text_left line-height-40 margin-top-40">{$ba.desc|raw}</div>
|
||||
<div class="img-responsive">
|
||||
<img src="{$ba.image}">
|
||||
</div>
|
||||
{/volist}
|
||||
{volist name="banners" id="ba" offset="2" length="3"}
|
||||
<div class="img-responsive text-center margin-4">
|
||||
<img src="{$ba.image}">
|
||||
</div>
|
||||
<div class="vision-title text_center margin-top-50">{$ba.title}</div>
|
||||
<div class="brand-con text_gray text_center line-height-40 margin-top-40">{$ba.desc|raw}</div>
|
||||
{/volist}
|
||||
</div>
|
||||
{/notempty}
|
||||
</div>
|
||||
</div>
|
||||
{/block}
|
||||
149
app/index/view/mobile/article/detail.html
Normal file
149
app/index/view/mobile/article/detail.html
Normal file
@@ -0,0 +1,149 @@
|
||||
{extend name="public/base" /}
|
||||
{block name="title"}
|
||||
{notempty name="detail.seo_title"}<title>{$detail.seo_title}</title>{else /}{__BLOCK__}{/notempty}
|
||||
{/block}
|
||||
{block name="seo"}
|
||||
{notempty name="detail.seo_keywords"}
|
||||
<meta name="keywords" content="{$detail.seo_keywords}" />
|
||||
<meta name="description" content="{$detail.seo_desc}" />
|
||||
{else /}
|
||||
{__BLOCK__}
|
||||
{/notempty}
|
||||
{/block}
|
||||
{block name="style"}
|
||||
<link rel="stylesheet" href="__CSS__/article_detail.css">
|
||||
{/block}
|
||||
{block name="main"}
|
||||
<div class="oricoEGapp">
|
||||
<!-- 内容 -->
|
||||
<div class="oricoEGapp-articledetail">
|
||||
<div class="content">
|
||||
<div class="blog_detail">
|
||||
<div class="blog_title">
|
||||
<h2>{$detail.title}</h2>
|
||||
<p>{$detail.release_time}</p>
|
||||
</div>
|
||||
<div class="blog_content">{$detail.content|raw}</div>
|
||||
</div>
|
||||
<div class="share_box">
|
||||
{notempty name="share_config"}
|
||||
<div class="blog_share">
|
||||
<h3>{:lang_i18n('分享')}</h3>
|
||||
<ul class="share_list">
|
||||
{volist name="share_config" id="sc"}
|
||||
<li>
|
||||
<a
|
||||
{if condition="!empty($sc.is_blank) && $sc.is_blank.value == 1"}target="_blank"{/if}
|
||||
{notempty name="sc.url.value"}href="{$sc.url.value}"{/notempty}>
|
||||
{eq name=":array_key_exists('triggered_qrcode', $sc)" value="true"}
|
||||
<img class="toggle_qrcode" src="{$sc.image.value}" />
|
||||
<div class="triggered_qrcode">
|
||||
<img src="{$sc.triggered_qrcode.value}" />
|
||||
</div>
|
||||
{else /}
|
||||
<img src="{$sc.image.value}" />
|
||||
{/eq}
|
||||
</a>
|
||||
</li>
|
||||
{/volist}
|
||||
</ul>
|
||||
</div>
|
||||
{/notempty}
|
||||
<div class="comment">
|
||||
<h3>{:lang_i18n('留言')}</h3>
|
||||
<form action="{:url('article/comment', ['id' => $detail.id])}" method="POST" class="comment_form clearfix" autocomplete="off">
|
||||
<div style="margin-right: 0.625rem; margin-bottom: 0.5rem;">{:lang_i18n('名称')}:<br>
|
||||
<input class="form-control itinp new_name" type="text" name="name">
|
||||
</div>
|
||||
<div>{:lang_i18n('电子邮箱')}:<br>
|
||||
<input class="form-control itinp new_email" type="email" name="email">
|
||||
<p style="color: #C6C7C9; font-size: 0.75rem; margin-bottom: 0.5rem; ">
|
||||
{:lang_i18n('您的电子邮件地址不会被公开')}
|
||||
</p>
|
||||
</div>
|
||||
<div class="comment_area">{:lang_i18n('留言内容')}:<br>
|
||||
<textarea class="form-control itinp new_comment" style="height: 3rem;border: 1px solid #DBDBDB;" name="content"></textarea>
|
||||
</div>
|
||||
</form>
|
||||
<div class="comment_btn" style="color:#ffffff;">{:lang_i18n('提交留言')}</div>
|
||||
</div>
|
||||
{notempty name="$recommends"}
|
||||
<div class="mblove">
|
||||
<div class="mianct">
|
||||
<p class="thtitle">{:lang_i18n('你可能还喜欢')}</p>
|
||||
<p><img src="__IMAGES__/1line.webp"></p>
|
||||
</div>
|
||||
<div class="swiper-container loveswiper">
|
||||
<div class="swiper-wrapper">
|
||||
{volist name="recommends" id="vo"}
|
||||
<div class="swiper-slide">
|
||||
<a href="{:url('article/detail', ['id' => $vo.id])}">
|
||||
<img src="{$vo.image}" alt="{$vo.title}">
|
||||
<p class="lvtit">{$vo.title}</p>
|
||||
</a>
|
||||
</div>
|
||||
{/volist}
|
||||
</div>
|
||||
<!-- 如果需要分页器 -->
|
||||
<div class="swiper-pagination"></div>
|
||||
</div>
|
||||
</div>
|
||||
{/notempty}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/block}
|
||||
{block name="script"}
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
$('.comment_btn').click(function() {
|
||||
var form = $('.comment_form');
|
||||
var form_data = form.serialize();
|
||||
$.ajax({
|
||||
url: form.attr('action'),
|
||||
type: 'POST',
|
||||
data: form_data,
|
||||
dataType: 'json',
|
||||
success: function(data) {
|
||||
alert(data.msg);
|
||||
if (data.code == 0) {
|
||||
window.location.reload();
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
$('.toggle_qrcode').click(function() {
|
||||
$(this).siblings('.triggered_qrcode').toggle();
|
||||
})
|
||||
})
|
||||
//banner轮播
|
||||
var loveswiper = new Swiper('.loveswiper', {
|
||||
// 配置选项
|
||||
slidesPerView: 2,
|
||||
spaceBetween: 30,
|
||||
loop: true,
|
||||
autoplay: {
|
||||
delay: 3000,
|
||||
},
|
||||
pagination: {
|
||||
el: '.swiper-pagination',
|
||||
}
|
||||
});
|
||||
function shareCustomers(){
|
||||
// 复制到粘贴板
|
||||
const input = document.createElement('input')
|
||||
input.setAttribute('readonly', 'readonly')
|
||||
let url=window.location.href
|
||||
input.setAttribute('value', url)
|
||||
document.body.appendChild(input)
|
||||
input.select()
|
||||
if (document.execCommand('copy')) {
|
||||
document.execCommand('copy')
|
||||
alert("{:lang_i18n('链接复制成功')}")
|
||||
}
|
||||
document.body.removeChild(input)
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
62
app/index/view/mobile/article/index.html
Normal file
62
app/index/view/mobile/article/index.html
Normal file
@@ -0,0 +1,62 @@
|
||||
{extend name="public/base" /}
|
||||
{block name="style"}
|
||||
<link rel="stylesheet" type="text/css" href="__CSS__/article_index.css" />
|
||||
{/block}
|
||||
{block name="main"}
|
||||
<div class="oricoEGapp">
|
||||
<!-- 内容 -->
|
||||
<div class="oricoEGapp-article">
|
||||
<!-- banner -->
|
||||
{notempty name="banner.image"}
|
||||
<div class="banner img-responsive">
|
||||
<img src="{$banner.image}">
|
||||
</div>
|
||||
{/notempty}
|
||||
<!-- 新闻列表 -->
|
||||
<div class="swt-Container">
|
||||
<div class="news-vertu">
|
||||
<div class="tab">
|
||||
{volist name="categorys" id="ca"}
|
||||
{if condition="$Request.get.cid == $ca.id || (!$Request.has.cid && $key == 0)"}
|
||||
<a class="on" href="{:url('article/index', ['pid' => $ca.pid, 'cid' => $ca.id])}">
|
||||
{else/}
|
||||
<a class="" href="{:url('article/index', ['pid' => $ca.pid, 'cid' => $ca.id])}">
|
||||
{/if}
|
||||
{$ca.name}
|
||||
</a>
|
||||
{/volist}
|
||||
</div>
|
||||
<div class="m_Container">
|
||||
<!-- Blog列表 s -->
|
||||
<div class="search_box">
|
||||
<form action="{:url('article/index', ['pid' => $Request.param.pid])}" method="get" autocomplete="off">
|
||||
<input type="text" class="search" id="article-blog-in" name="keywords" value="">
|
||||
<input type="hidden" class="search" id="article-blog-in" name="cid" value="{$Request.get.cid}">
|
||||
<button id="blog-btnput" class="search-button-blog" style="padding:5px 12px;">{:lang_i18n('搜索')}</button>
|
||||
</form>
|
||||
</div>
|
||||
{notempty name="articles"}
|
||||
<div class="blog_list">
|
||||
<ul class="clearfix">
|
||||
{volist name="articles" id="ar"}
|
||||
<li>
|
||||
<a href="{:url('article/detail', ['id' => $ar.id])}">
|
||||
<img src="{$ar.image}">
|
||||
<h3>{$ar.title}</h3>
|
||||
<p>{$ar.desc|raw}</p>
|
||||
</a>
|
||||
<span class="blue">{$ar.release_time|default=''|date='Y-m-d'}</span>
|
||||
</li>
|
||||
{/volist}
|
||||
</ul>
|
||||
</div>
|
||||
<!-- 分页 s -->
|
||||
<div>{$articles|raw}</div>
|
||||
<!-- 分页 e -->
|
||||
{/notempty}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/block}
|
||||
@@ -20,7 +20,7 @@
|
||||
</div>
|
||||
<div class="infolist">
|
||||
{notempty name="videos"}
|
||||
{assign name="flat_videos" value=":\think\helper\Arr::flatMap(fn($item) => $item->toArray(), $videos->items())" /}
|
||||
{assign name="flat_videos" value=":array_flatten($videos->items())" /}
|
||||
{volist name="flat_videos" id="vo"}
|
||||
<div class="vd-item">
|
||||
<video controls="" poster="{$vo.image|default=''}">
|
||||
|
||||
34
app/index/view/mobile/faq/index.html
Normal file
34
app/index/view/mobile/faq/index.html
Normal file
@@ -0,0 +1,34 @@
|
||||
{extend name="public/base" /}
|
||||
{block name="title"}
|
||||
<title>{:lang_i18n('常见FQ_下载与服务_中文官网帮助信息_ORICO/奥睿科官网')}</title>
|
||||
{/block}
|
||||
{block name="style"}
|
||||
<link rel="stylesheet" href="__CSS__/faq.css">
|
||||
{/block}
|
||||
{block name="main"}
|
||||
<div class="oricoEGapp">
|
||||
<!-- 内容-->
|
||||
<div class="oricoEGapp-fq">
|
||||
<!--banner-->
|
||||
{notempty name="banner.image"}
|
||||
<div class="banner">
|
||||
<img src="{$banner.image}">
|
||||
</div>
|
||||
{/notempty}
|
||||
<!--常见问题解答-->
|
||||
{notempty name="faq"}
|
||||
<div class="m_Container">
|
||||
<div class="title text_center margin-top-50 text_black"><strong>{:lang_i18n('常见问题解答')}</strong>
|
||||
</div>
|
||||
{volist name="faq" id="vo"}
|
||||
<div class="img-responsives margin-top-40"><img src="{$vo.image}"></div>
|
||||
<div class="subtitle text_black text_center margin-top-30">{$vo.question}</div>
|
||||
<div class="des text_gray line-height-40 margin-top-40">{$vo.answer|raw}</div>
|
||||
{/volist}
|
||||
</div>
|
||||
<!-- 分页-->
|
||||
<div >{$faq|raw}</div>
|
||||
{/notempty}
|
||||
</div>
|
||||
</div>
|
||||
{/block}
|
||||
150
app/index/view/mobile/topic_nas/index.html
Normal file
150
app/index/view/mobile/topic_nas/index.html
Normal file
@@ -0,0 +1,150 @@
|
||||
{extend name="public/base"/}
|
||||
{block name="style"}
|
||||
<link rel="stylesheet" href="__CSS__/topic_nas_index.css">
|
||||
{/block}
|
||||
{block name="main"}
|
||||
<div class="oricoEGapp">
|
||||
<!-- 首页 -->
|
||||
<div class="oricoCN-nasindex">
|
||||
<div class="narsMBpage">
|
||||
<!-- 轮播 banner -->
|
||||
{notempty name="focus_image"}
|
||||
<div class="narsMB-banner">
|
||||
<div class="swiper-container narsMBbannerSwiper">
|
||||
<div class="swiper-wrapper">
|
||||
{volist name="focus_image" id="fo"}
|
||||
<div class="swiper-slide">
|
||||
<div class="narsMB-banner-st">
|
||||
<h2></h2>
|
||||
<span class="narsMB-bannersm"></span>
|
||||
</div>
|
||||
<a href="{$fo.link}"><img src="{$fo.image}" class="narsmb-img" /></a>
|
||||
</div>
|
||||
{/volist}
|
||||
</div>
|
||||
<!-- Add Pagination -->
|
||||
<div class="swiper-pagination"></div>
|
||||
</div>
|
||||
</div>
|
||||
{/notempty}
|
||||
<!-- 九大模块分类 -->
|
||||
{notempty name="nas_category"}
|
||||
{assign name="categories" value=":array_flatten($nas_category)"/}
|
||||
<div class="narsmb-cate">
|
||||
{assign name="categories_idx1" value=":array_shift($categories)"/}
|
||||
{notempty name="categories_idx1"}
|
||||
<a class="{$categories_idx1.link}">
|
||||
<img src="{$categories_idx1.image}" style="width:100%" />
|
||||
</a>
|
||||
{/notempty}
|
||||
{assign name="categories_chunk" value=":array_chunk($categories, 2)"/}
|
||||
{volist name="categories_chunk" id="chunk"}
|
||||
<div class="narsmbcateits">
|
||||
{volist name="chunk" id="cc"}
|
||||
<a class="narsmbcate-it" href="{$cc.link}">
|
||||
<img src="{$cc.image}" style="width:100%" />
|
||||
</a>
|
||||
{/volist}
|
||||
</div>
|
||||
{/volist}
|
||||
</div>
|
||||
{/notempty}
|
||||
<!-- 视频 -->
|
||||
{notempty name="nas_video"}
|
||||
<div class="narsmbvd">
|
||||
<video class="narsmbvideo" poster="{$nas_video.image}" controls autoplay loop muted>
|
||||
<source type="video/mp4" src="{$nas_video.video}">
|
||||
</video>
|
||||
</div>
|
||||
{/notempty}
|
||||
<!-- 解决方案 -->
|
||||
{notempty name="nas_solution"}
|
||||
<div class="narsmb-jjfa">
|
||||
<span class="narsmbjjfa-title"><span style="color:#084BFA">ORICO</span>{:lang_i18n('网络存储解决方案')}</span>
|
||||
<div class="swiper narsmbjjfaSwiper">
|
||||
<div class="swiper-wrapper">
|
||||
{volist name="nas_solution" id="so"}
|
||||
<div class="swiper-slide narsmbjjfa-slide">
|
||||
<div class="narsmb-jjfa-ct" {:style(['color' => $so.title_txt_color])}>{$so.title}</div>
|
||||
<img src="{$so.image}" class="narsmb-jjfabgimg" />
|
||||
<!-- 点击移入效果-->
|
||||
<div class="narsmb-jjfa-info" style="text-align:left;white-space:pre-line;">
|
||||
<div class="box">
|
||||
<p {:style(['color' => $so.title_txt_color])}>{$so.title}</p>
|
||||
<div {:style(['color' => $so.desc_txt_color])}>{$so.desc|raw}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/volist}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/notempty}
|
||||
<!-- 微链接 -->
|
||||
{notempty name="nas_software"}
|
||||
<div class="narsmb-wlj">
|
||||
<span class="narsmbwlj-title"><span style="color:#084BFA">NAS</span> {:lang_i18n('配套软件')}</span>
|
||||
{volist name="nas_software" id="soft" offset="0" length="3"}
|
||||
<div class="narsmbwltitem">
|
||||
<div class="narsmbwljcp">
|
||||
<img src="{$soft.image}" class="narsmbwljimg" />
|
||||
</div>
|
||||
<div class="narsmbwljcpinfo">
|
||||
<span class="narsmbif-title" {:style(['color' => $soft.title_txt_color])}>{$soft.title}</span>
|
||||
<span class="narsmbif-info" {:style(['color' => $soft.desc_txt_color])}>{$soft.desc|raw}</span>
|
||||
</div>
|
||||
</div>
|
||||
{/volist}
|
||||
{volist name="nas_software" id="soft" offset="3"}
|
||||
<div class="narsmbwltitem">
|
||||
<a style="height:100%;width:100%" {notempty name="soft.link"}href="{$soft.link}"{/notempty}>
|
||||
<img src="{$soft.image}" style="height:100%;width:100%" />
|
||||
</a>
|
||||
</div>
|
||||
{/volist}
|
||||
</div>
|
||||
{/notempty}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/block}
|
||||
{block name="script"}
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function () {
|
||||
// banner轮播
|
||||
var bannerswiper = new Swiper('.narsMBbannerSwiper', {
|
||||
// 配置选项
|
||||
loop: true,
|
||||
autoplay: {
|
||||
delay: 3000,
|
||||
},
|
||||
pagination: {
|
||||
el: '.swiper-pagination',
|
||||
}
|
||||
});
|
||||
// 解决方案轮播
|
||||
var swiper1 = new Swiper(".narsmbjjfaSwiper", {
|
||||
slidesPerView: "auto",
|
||||
spaceBetween: 6,
|
||||
freeMode: true,
|
||||
autoplay: 5000,
|
||||
loop: true
|
||||
});
|
||||
// 解决方案轮播点击显示文案
|
||||
var swiperSlides = document.querySelectorAll('.narsmbjjfa-slide');
|
||||
// 为每个 swiper-slide 添加点击事件
|
||||
swiperSlides.forEach(function (slide) {
|
||||
slide.addEventListener('click', function () {
|
||||
var infoElement = this.querySelector('.narsmb-jjfa-info');
|
||||
if (window.getComputedStyle(infoElement).display === 'none') {
|
||||
infoElement.style.display = 'flex';
|
||||
swiper1.stopAutoplay()
|
||||
} else {
|
||||
infoElement.style.display = 'none';
|
||||
swiper1.startAutoplay()
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{/block}
|
||||
@@ -8,92 +8,63 @@
|
||||
<link rel="stylesheet" type="text/css" href="__CSS__/animate.min.css" />
|
||||
{/block}
|
||||
{block name="main"}
|
||||
<div class="culture_top">
|
||||
{notempty name="focus_image"}
|
||||
{notempty name="focus_image.link"}
|
||||
<a href="{$focus_image.link}">
|
||||
<img src="{$focus_image.image}" />
|
||||
</a>
|
||||
{else/}
|
||||
<img src="{$focus_image.image}" />
|
||||
{/notempty}
|
||||
{notempty name="culture"}
|
||||
<div class="culture_bril_con swt-Container">
|
||||
{volist name="culture" id="cul" offset="0" length="3"}
|
||||
<div class="culture_bril_div">
|
||||
<div class="iconimg"><img src="{$cul.image}" /></div>
|
||||
<div class="title">
|
||||
<p>{$cul.title}</p>
|
||||
</div>
|
||||
<div class="subtitle">{$cul.desc|raw}</div>
|
||||
</div>
|
||||
{/volist}
|
||||
</div>
|
||||
{/notempty}
|
||||
</div>
|
||||
{notempty name="culture"}
|
||||
<div class="culture_vision">
|
||||
<div class="swt-Container">
|
||||
<div class="title">
|
||||
<!--Vision and Mission-->
|
||||
</div>
|
||||
{volist name="culture" id="cul" key="k" offset="3" mod="2"}
|
||||
{eq name="mod" value="1"}
|
||||
<div class="swt-Table img-responsive">
|
||||
<div id="tab{$k}" class="Table-Row">
|
||||
<div class="Table-Cell left"><img src="{$cul.image}" /></div>
|
||||
<div class="Table-Cell center"></div>
|
||||
<div class="Table-Cell right">
|
||||
<p class="subtitle">{$cul.title}</p>
|
||||
<p class="des">{$cul.desc|raw}</p>
|
||||
<div class="orico_Page_productxc">
|
||||
<!--内容 -->
|
||||
<div class="productxcMain">
|
||||
<div class="culture_top">
|
||||
{notempty name="focus_image"}
|
||||
<a {notempty name="focus_image.link"}href="{$focus_image.link}"{/notempty}>
|
||||
<img src="{$focus_image.image}">
|
||||
</a>
|
||||
{/notempty}
|
||||
{notempty name="culture"}
|
||||
<div class="culture_bril_con">
|
||||
{volist name="culture" id="cul" offset="0" length="3"}
|
||||
<div class="culture_bril_div animated fadeInUp">
|
||||
<div class="iconimg"><img src="{$cul.image}"></div>
|
||||
<div class="title">
|
||||
<p>{$cul.title}</p>
|
||||
</div>
|
||||
<div class="subtitle">{$cul.desc|raw}</div>
|
||||
</div>
|
||||
{/volist}
|
||||
</div>
|
||||
{/notempty}
|
||||
</div>
|
||||
{else /}
|
||||
<div class="swt-Table img-responsive culture_vision_02">
|
||||
<div id="tab{$k}" class="Table-Row">
|
||||
<div class="Table-Cell left">
|
||||
<p class="subtitle">{$cul.title}</p>
|
||||
<p class="des">{$cul.desc|raw}</p>
|
||||
{notempty name="culture"}
|
||||
<div class="culture_vision">
|
||||
<div class="swt-Container">
|
||||
<div class="title">
|
||||
<!--Vision and Mission-->
|
||||
</div>
|
||||
<div class="Table-Cell center"></div>
|
||||
<div class="Table-Cell right"><img src="{$cul.image}" /></div>
|
||||
{volist name="culture" id="cul" key="k" offset="3" mod="2"}
|
||||
{eq name="mod" value="1"}
|
||||
<div class="swt-Table img-responsive culture_vision_02">
|
||||
<div id="tab{$k}" class="Table-Row">
|
||||
<div class="Table-Cell left animated fadeInLeft">
|
||||
<p class="subtitle">{$cul.title}</p>
|
||||
<div class="des">{$cul.desc|raw}</div>
|
||||
</div>
|
||||
<div class="Table-Cell center"></div>
|
||||
<div class="Table-Cell right animated fadeInRight"><img src="{$cul.image}"></div>
|
||||
</div>
|
||||
</div>
|
||||
{else /}
|
||||
<div class="swt-Table img-responsive">
|
||||
<div id="tab{$k}" class="Table-Row">
|
||||
<div class="Table-Cell left animated fadeInLeft"><img src="{$cul.image}"></div>
|
||||
<div class="Table-Cell center"></div>
|
||||
<div class="Table-Cell right animated fadeInRight">
|
||||
<p class="subtitle">{$cul.title}</p>
|
||||
<div class="des">{$cul.desc|raw}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/eq}
|
||||
{/volist}
|
||||
</div>
|
||||
</div>
|
||||
{/eq}
|
||||
{/volist}
|
||||
{/notempty}
|
||||
</div>
|
||||
</div>
|
||||
{/notempty}
|
||||
{/block}
|
||||
{block name="script"}
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('.culture_bril_div').addClass('animated fadeInUp');
|
||||
|
||||
var myelement = $('#tab1'); // the element to act on if viewable
|
||||
goScroll(myelement);
|
||||
var myelement2 = $('#tab2'); // the element to act on if viewable
|
||||
goScroll(myelement2);
|
||||
var myelement3 = $('#tab3'); // the element to act on if viewable
|
||||
goScroll(myelement3);
|
||||
|
||||
function goScroll(obj){
|
||||
$(window).scroll(function() {
|
||||
if(isScrolledIntoView(obj)) {
|
||||
$(obj).find('.left').addClass('animated fadeInLeft');
|
||||
$(obj).find('.right').addClass('animated fadeInRight');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function isScrolledIntoView(elem) {
|
||||
var docViewTop = $(window).scrollTop();
|
||||
var docViewBottom = docViewTop + $(window).height();
|
||||
var elemTop = $(elem).offset().top;
|
||||
var elemBottom = elemTop + $(elem).height();
|
||||
return (elemTop <= docViewBottom);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
{/block}
|
||||
@@ -15,13 +15,15 @@
|
||||
{/block}
|
||||
{block name="main"}
|
||||
<div class="orico_Page_articleDetail">
|
||||
<!--内容 -->
|
||||
<div class="articleDetailMain">
|
||||
<div class="atmleft">
|
||||
<div class="ct">
|
||||
<div class="blog_title">
|
||||
<h2>{$detail.title}</h2>
|
||||
<p>{$detail.desc}</p>
|
||||
<!--内容 -->
|
||||
<div class="articleDetailMain">
|
||||
<div class="atmleft">
|
||||
<div class="blog_title">
|
||||
<h2>{$detail.title}</h2>
|
||||
<p>{$detail.release_time}</p>
|
||||
</div>
|
||||
<!-- 文本渲染-->
|
||||
<div class="blog_content">{$detail.content|raw}</div>
|
||||
</div>
|
||||
<!-- 文本渲染-->
|
||||
<div class="blog_content">{$detail.content|raw}</div>
|
||||
|
||||
@@ -36,9 +36,7 @@
|
||||
<img src="{$ar.image}" />
|
||||
<h3>{$ar.title}</h3>
|
||||
<p>{$ar.desc}</p>
|
||||
|
||||
<!--时间 -->
|
||||
<p>2025-04-16 18:10:25</p>
|
||||
<p>{$ar.release_time}</p>
|
||||
</a>
|
||||
</div>
|
||||
{/volist}
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<div class="oriprdetail">
|
||||
<!--产品路径-->
|
||||
<div class="product_address">
|
||||
<a class="pathname" href="/">首页</a>
|
||||
<a class="pathname" href="/">{:lang_i18n('首页')}</a>
|
||||
{volist name="product_categorys" id="ca"}
|
||||
<div class="arrow"></div>
|
||||
<a class="pathname" href="{:url('product/category', ['id' => $ca.id])}">{$ca.name}</a>
|
||||
|
||||
Reference in New Issue
Block a user