feat: 官网代码全量更新 (2026-04-18)
这个提交包含在:
+11
-10
@@ -17,7 +17,7 @@
|
||||
|
||||
<!-- 风景大图 -->
|
||||
<div class="scenic-banner">
|
||||
<img src="/images/seasons/autumn-hero.jpg" alt="秋季大兴安岭金色白桦林" loading="eager" />
|
||||
<img :src="'/images/seasons/autumn-hero.jpg'" alt="秋季大兴安岭金色白桦林" loading="eager" />
|
||||
</div>
|
||||
|
||||
<!-- 产品设计理念 -->
|
||||
@@ -26,7 +26,7 @@
|
||||
<!-- 秋季亮点 -->
|
||||
<section v-if="autumnData" class="section reveal">
|
||||
<div class="container">
|
||||
<CommonSectionTitle title="秋季呼伦贝尔 · 不可错过的风景" subtitle="每年9月中旬-10月中旬" />
|
||||
<CommonSectionTitle :title="st('productsAutumn.highlights', '秋季呼伦贝尔 · 不可错过的风景')" :subtitle="st('productsAutumn.highlights', '每年9月中旬-10月中旬', 'subtitle')" />
|
||||
<div class="highlights-grid">
|
||||
<div v-for="h in autumnData.highlights" :key="h.title" class="highlight-card">
|
||||
<h3 class="highlight-title">{{ h.title }}</h3>
|
||||
@@ -39,7 +39,7 @@
|
||||
<!-- 南线产品卡片 -->
|
||||
<section class="section reveal">
|
||||
<div class="container">
|
||||
<CommonSectionTitle title="南线 · 呼伦贝尔+阿尔山" subtitle="草原秋色与火山天池" />
|
||||
<CommonSectionTitle :title="st('productsAutumn.southLine', '南线 · 呼伦贝尔+阿尔山')" :subtitle="st('productsAutumn.southLine', '草原秋色与火山天池', 'subtitle')" />
|
||||
<div class="products-grid">
|
||||
<AutumnProductCard v-for="p in southVersions" :key="p.id" :product="p" />
|
||||
</div>
|
||||
@@ -49,7 +49,7 @@
|
||||
<!-- 南线特色体验 -->
|
||||
<section v-if="autumnData" class="section section--warm reveal">
|
||||
<div class="container">
|
||||
<CommonSectionTitle title="南线独有体验" subtitle="阿尔山专属" />
|
||||
<CommonSectionTitle :title="st('productsAutumn.southHighlights', '南线独有体验')" :subtitle="st('productsAutumn.southHighlights', '阿尔山专属', 'subtitle')" />
|
||||
<div class="highlights-grid highlights-grid--small">
|
||||
<div v-for="h in autumnData.southHighlights" :key="h.title" class="highlight-card">
|
||||
<h3 class="highlight-title">{{ h.title }}</h3>
|
||||
@@ -62,14 +62,14 @@
|
||||
<!-- 中间转化入口 -->
|
||||
<CommonSectionCTA
|
||||
title="不确定选南线还是北线?"
|
||||
description="联系定制师,根据您的假期和偏好推荐最适合的行程"
|
||||
description="联系定制师,根据您的假期和偏好推荐合适的行程"
|
||||
:links="[{ to: '/contact', text: '联系定制师' }]"
|
||||
/>
|
||||
|
||||
<!-- 北线产品卡片 -->
|
||||
<section class="section reveal">
|
||||
<div class="container">
|
||||
<CommonSectionTitle title="北线 · 呼伦贝尔+大兴安岭" subtitle="深入大兴安岭腹地赏秋" />
|
||||
<CommonSectionTitle :title="st('productsAutumn.northLine', '北线 · 呼伦贝尔+大兴安岭')" :subtitle="st('productsAutumn.northLine', '深入大兴安岭腹地赏秋', 'subtitle')" />
|
||||
<div class="products-grid">
|
||||
<AutumnProductCard v-for="p in northVersions" :key="p.id" :product="p" />
|
||||
</div>
|
||||
@@ -79,7 +79,7 @@
|
||||
<!-- 北线特色体验 -->
|
||||
<section v-if="autumnData" class="section section--warm reveal">
|
||||
<div class="container">
|
||||
<CommonSectionTitle title="北线独有体验" subtitle="大兴安岭专属" />
|
||||
<CommonSectionTitle :title="st('productsAutumn.northHighlights', '北线独有体验')" :subtitle="st('productsAutumn.northHighlights', '大兴安岭专属', 'subtitle')" />
|
||||
<div class="highlights-grid highlights-grid--small">
|
||||
<div v-for="h in autumnData.northHighlights" :key="h.title" class="highlight-card">
|
||||
<h3 class="highlight-title">{{ h.title }}</h3>
|
||||
@@ -92,7 +92,7 @@
|
||||
<!-- 选择指南 -->
|
||||
<section v-if="autumnData?.selectionGuide" id="guide" class="section section--gray reveal">
|
||||
<div class="container">
|
||||
<CommonSectionTitle title="不知道选哪个?" subtitle="按假期长度推荐" />
|
||||
<CommonSectionTitle :title="st('productsAutumn.selection', '不知道选哪个?')" :subtitle="st('productsAutumn.selection', '按假期长度推荐', 'subtitle')" />
|
||||
<div class="guide-items">
|
||||
<div v-for="item in autumnData.selectionGuide.byVacationLength" :key="item.condition" class="guide-item">
|
||||
<div class="guide-item-top">
|
||||
@@ -127,10 +127,11 @@
|
||||
import { useBreadcrumbSchema } from '~/composables/useJsonLd'
|
||||
|
||||
const { data: autumnData } = await usePublicApi('autumn-products')
|
||||
const st = await useSectionTitles()
|
||||
|
||||
const seo = useSEO('products-autumn', {
|
||||
title: '游牧的森林V3 - 呼伦贝尔秋季定制游 - 呼籁旅行',
|
||||
description: '呼籁旅行呼伦贝尔秋季定制游产品「游牧的森林」V3系列,南线呼伦贝尔+阿尔山、北线呼伦贝尔+大兴安岭,4-7天6个版本可选。独立成团不拼团,一家一单一车。',
|
||||
title: '游牧的森林V3 - 呼伦贝尔秋季定制游·4-8天7版本可选 - 呼籁旅行',
|
||||
description: '呼籁旅行呼伦贝尔秋季定制游产品「游牧的森林」V3系列,南线呼伦贝尔+阿尔山、北线呼伦贝尔+大兴安岭、南北8天7晚全景版,4-8天共7个版本可选。独立成团不拼团,一家一单一车。',
|
||||
h1: '游牧的森林 · 呼伦贝尔秋季定制游',
|
||||
})
|
||||
|
||||
|
||||
+8
-6
@@ -2,7 +2,7 @@
|
||||
<div class="page-products">
|
||||
<LayoutPageHero
|
||||
:title="seo.h1"
|
||||
subtitle="独立成团不拼团 · 一单一车 · 随走随停 · 不错过每处风景"
|
||||
:subtitle="heroes?.products || '独立成团不拼团 · 一单一车 · 随走随停 · 不错过每处风景'"
|
||||
:breadcrumbs="[{ text: '产品线', to: '/products' }, { text: '额吉的故乡' }]"
|
||||
/>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
<!-- 风景大图 -->
|
||||
<div class="scenic-banner">
|
||||
<img src="/images/seasons/summer-hero.jpg" alt="夏季呼伦贝尔莫日格勒河草原全景" loading="eager" />
|
||||
<img :src="'/images/seasons/summer-hero.jpg'" alt="夏季呼伦贝尔莫日格勒河草原全景" loading="eager" />
|
||||
</div>
|
||||
|
||||
<!-- 产品设计理念 -->
|
||||
@@ -26,7 +26,7 @@
|
||||
<!-- 产品卡片 -->
|
||||
<section v-if="products" class="section reveal">
|
||||
<div class="container">
|
||||
<CommonSectionTitle title="额吉的故乡V9系列" subtitle="5-7天多版本行程" />
|
||||
<CommonSectionTitle :title="st('products.v9Series', '额吉的故乡V9系列')" :subtitle="st('products.v9Series', '5-7天多版本行程', 'subtitle')" />
|
||||
<div class="products-grid">
|
||||
<ProductsProductCard v-for="p in products.versions" :key="p.id" :product="p" />
|
||||
</div>
|
||||
@@ -35,14 +35,14 @@
|
||||
|
||||
<!-- 夏季风景 -->
|
||||
<div class="scenic-duo reveal">
|
||||
<img src="/images/seasons/summer-river.jpg" alt="夏季草原蒙古包莫日格勒河全景" loading="lazy" />
|
||||
<img src="/images/seasons/summer-car.jpg" alt="呼伦贝尔一单一车草原越野" loading="lazy" />
|
||||
<img :src="'/images/seasons/summer-river.jpg'" alt="夏季草原蒙古包莫日格勒河全景" loading="lazy" />
|
||||
<img :src="'/images/seasons/summer-car.jpg'" alt="呼伦贝尔一单一车草原越野" loading="lazy" />
|
||||
</div>
|
||||
|
||||
<!-- 中间转化入口 -->
|
||||
<CommonSectionCTA
|
||||
title="不确定选哪个版本?"
|
||||
description="5个问题,1分钟,找到最适合你家庭的行程版本"
|
||||
description="5个问题,1分钟,找到适合你家庭的行程版本"
|
||||
:links="[{ to: '/selector', text: '使用选版工具' }, { to: '/contact', text: '联系定制师' }]"
|
||||
/>
|
||||
|
||||
@@ -92,7 +92,9 @@
|
||||
import { useProductsListSchema, useBreadcrumbSchema } from '~/composables/useJsonLd'
|
||||
|
||||
const { data: products } = await usePublicApi('products')
|
||||
const { data: heroes } = await usePublicApi('heroes')
|
||||
const { data: versions } = await usePublicApi('versions')
|
||||
const st = await useSectionTitles()
|
||||
|
||||
const seo = useSEO('products')
|
||||
useScrollReveal()
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<div class="page-winter">
|
||||
<LayoutPageHero
|
||||
:title="seo.h1"
|
||||
subtitle="独立成团不拼团 · 一单一车 · 随走随停 · 不错过每处风景"
|
||||
:subtitle="heroes?.['products-winter'] || '独立成团不拼团 · 一单一车 · 随走随停 · 不错过每处风景'"
|
||||
:breadcrumbs="[{ text: '产品线', to: '/products' }, { text: '嗨冰雪' }]"
|
||||
background-image="/images/seasons/winter-hero.jpg"
|
||||
/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<!-- 产品卡片 -->
|
||||
<section v-if="winterData" class="section reveal">
|
||||
<div class="container">
|
||||
<CommonSectionTitle title="嗨冰雪V3系列" subtitle="5-7天南北两线,专属私家团" />
|
||||
<CommonSectionTitle :title="st('productsWinter.versions', '嗨冰雪V3系列')" :subtitle="st('productsWinter.versions', '5-7天南北两线,专属私家团', 'subtitle')" />
|
||||
<div class="products-grid">
|
||||
<WinterProductCard v-for="p in winterData.versions" :key="p.id" :product="p" />
|
||||
</div>
|
||||
@@ -39,7 +39,7 @@
|
||||
<!-- 共同亮点 -->
|
||||
<section v-if="winterData" class="section reveal">
|
||||
<div class="container">
|
||||
<CommonSectionTitle title="冬季行程亮点" subtitle="每一条线路都会体验到" />
|
||||
<CommonSectionTitle :title="st('productsWinter.highlights', '冬季行程亮点')" :subtitle="st('productsWinter.highlights', '每一条线路都会体验到', 'subtitle')" />
|
||||
<div class="highlights-grid">
|
||||
<div v-for="(h, i) in winterData.highlights" :key="i" class="highlight-card">
|
||||
<h3 class="highlight-title">{{ h.title }}</h3>
|
||||
@@ -52,7 +52,7 @@
|
||||
<!-- 南线特色 -->
|
||||
<section v-if="winterData" class="section section--warm reveal">
|
||||
<div class="container">
|
||||
<CommonSectionTitle title="南线特色 · 呼伦贝尔+阿尔山" subtitle="大雪原与童话小城的碰撞" />
|
||||
<CommonSectionTitle :title="st('productsWinter.south', '南线特色 · 呼伦贝尔+阿尔山')" :subtitle="st('productsWinter.south', '大雪原与童话小城的碰撞', 'subtitle')" />
|
||||
<div class="highlights-grid">
|
||||
<div v-for="(h, i) in winterData.southHighlights" :key="i" class="highlight-card">
|
||||
<h3 class="highlight-title">{{ h.title }}</h3>
|
||||
@@ -65,7 +65,7 @@
|
||||
<!-- 北线特色 -->
|
||||
<section v-if="winterData" class="section reveal">
|
||||
<div class="container">
|
||||
<CommonSectionTitle title="北线特色 · 呼伦贝尔+大兴安岭" subtitle="边境风情与驯鹿部落的秘境" />
|
||||
<CommonSectionTitle :title="st('productsWinter.north', '北线特色 · 呼伦贝尔+大兴安岭')" :subtitle="st('productsWinter.north', '边境风情与驯鹿部落的秘境', 'subtitle')" />
|
||||
<div class="highlights-grid">
|
||||
<div v-for="(h, i) in winterData.northHighlights" :key="i" class="highlight-card">
|
||||
<h3 class="highlight-title">{{ h.title }}</h3>
|
||||
@@ -88,6 +88,8 @@
|
||||
import { useBreadcrumbSchema } from '~/composables/useJsonLd'
|
||||
|
||||
const { data: winterData } = await usePublicApi('winter-products')
|
||||
const { data: heroes } = await usePublicApi('heroes')
|
||||
const st = await useSectionTitles()
|
||||
|
||||
const seo = useSEO('products-winter', {
|
||||
title: '嗨冰雪 - 呼伦贝尔冬季定制游 · 南北两线5-7天 - 呼籁旅行',
|
||||
|
||||
在新工单中引用
屏蔽一个用户