This commit is contained in:
迷和油
2025-06-07 14:34:11 +08:00
56 changed files with 3122 additions and 862 deletions

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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']}%");

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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');
}
}

View File

@@ -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 '';
}

View File

@@ -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",

View File

@@ -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('留言提交成功'));
}
}

View File

@@ -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'])

View File

@@ -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']];
}
}
}

View File

@@ -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',

View File

@@ -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',
],
];

View File

@@ -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',

View 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}

View File

@@ -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}

View 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}

View 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}

View 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}

View 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}

View 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}

View File

@@ -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=''}">

View 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}

View 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}

View File

@@ -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}

View File

@@ -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>

View File

@@ -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}

View File

@@ -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>