Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
Y
yinzhuang
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xuchentao
yinzhuang
Commits
86facc5e
Commit
86facc5e
authored
Jul 29, 2026
by
xuchentao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
全站将「银饰志」更名为「银饰资讯」
parent
4e4217d1
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
21 additions
and
21 deletions
+21
-21
CMS_README.md
CMS_README.md
+2
-2
README.md
README.md
+2
-2
ArticleListing.astro
src/components/ArticleListing.astro
+1
-1
ArticlesView.astro
src/components/ArticlesView.astro
+4
-4
Footer.astro
src/components/Footer.astro
+1
-1
site.ts
src/data/site.ts
+1
-1
index.astro
src/pages/admin/index.astro
+4
-4
[slug].astro
src/pages/articles/[slug].astro
+3
-3
index.astro
src/pages/index.astro
+1
-1
llms.txt.ts
src/pages/llms.txt.ts
+2
-2
No files found.
CMS_README.md
View file @
86facc5e
# 银妆银饰
志
后台
# 银妆银饰
资讯
后台
本项目采用与官网同端口的 Astro 文章后台:Markdown 文件负责内容存储,Astro 同时提供后台 API 和静态页面生成。文章列表、分类页和详情页全部预渲染为 HTML,便于 SEO 与 GEO 搜索。
本项目采用与官网同端口的 Astro 文章后台:Markdown 文件负责内容存储,Astro 同时提供后台 API 和静态页面生成。文章列表、分类页和详情页全部预渲染为 HTML,便于 SEO 与 GEO 搜索。
...
@@ -30,7 +30,7 @@ npm start
...
@@ -30,7 +30,7 @@ npm start
-
官网:
`http://localhost:8790/`
-
官网:
`http://localhost:8790/`
-
文章后台:
`http://localhost:8790/admin`
-
文章后台:
`http://localhost:8790/admin`
-
银饰
志
:
`http://localhost:8790/articles/`
-
银饰
资讯
:
`http://localhost:8790/articles/`
启动命令会自动读取项目根目录的
`.env`
,其中包含:
启动命令会自动读取项目根目录的
`.env`
,其中包含:
...
...
README.md
View file @
86facc5e
# 银妆企业官网
# 银妆企业官网
长沙银妆文化发展有限公司官方网站。项目基于 Astro 5 + Node standalone adapter,包含品牌官网、产品轮播、响应式页面、银饰
志
内容后台、SEO、原子构建与 GitLab/Nginx 部署配置。
长沙银妆文化发展有限公司官方网站。项目基于 Astro 5 + Node standalone adapter,包含品牌官网、产品轮播、响应式页面、银饰
资讯
内容后台、SEO、原子构建与 GitLab/Nginx 部署配置。
## 本地运行
## 本地运行
...
@@ -31,7 +31,7 @@ npm start # 启动 standalone 服务
...
@@ -31,7 +31,7 @@ npm start # 启动 standalone 服务
## 内容管理
## 内容管理
银饰
志
使用 Markdown 存储,并由同端口
`/admin/`
后台管理。工作稿位于
`src/content/articles/`
,线上稿位于
`src/content/published/`
;生产环境可通过
`CMS_DATA_DIR`
将内容持久化到仓库外。发布、下架、删除和分类修改会触发带共享锁的静态页面重建。
银饰
资讯
使用 Markdown 存储,并由同端口
`/admin/`
后台管理。工作稿位于
`src/content/articles/`
,线上稿位于
`src/content/published/`
;生产环境可通过
`CMS_DATA_DIR`
将内容持久化到仓库外。发布、下架、删除和分类修改会触发带共享锁的静态页面重建。
完整后台与部署说明见
[
CMS_README.md
](
./CMS_README.md
)
。
完整后台与部署说明见
[
CMS_README.md
](
./CMS_README.md
)
。
...
...
src/components/ArticleListing.astro
View file @
86facc5e
...
@@ -15,7 +15,7 @@ const { items, categories, totalCount, activeSlug, currentPage, lastPage, basePa
...
@@ -15,7 +15,7 @@ const { items, categories, totalCount, activeSlug, currentPage, lastPage, basePa
const pageHref = (page: number) => page <= 1 ? `${basePath}/` : `${basePath}/page/${page}/`;
const pageHref = (page: number) => page <= 1 ? `${basePath}/` : `${basePath}/page/${page}/`;
const pages = paginationWindow(currentPage, lastPage);
const pages = paginationWindow(currentPage, lastPage);
---
---
<nav class="article-tabs" aria-label="银饰
志
分类">
<nav class="article-tabs" aria-label="银饰
资讯
分类">
<a class:list={["article-tab", { active: activeSlug === null }]} href="/articles/">全部 <span>{totalCount}</span></a>
<a class:list={["article-tab", { active: activeSlug === null }]} href="/articles/">全部 <span>{totalCount}</span></a>
{categories.map((category) => (
{categories.map((category) => (
<a class:list={["article-tab", { active: activeSlug === category.slug }]} href={`/articles/topic/${category.slug}/`}>
<a class:list={["article-tab", { active: activeSlug === category.slug }]} href={`/articles/topic/${category.slug}/`}>
...
...
src/components/ArticlesView.astro
View file @
86facc5e
...
@@ -7,11 +7,11 @@ import { site } from "../data/site";
...
@@ -7,11 +7,11 @@ import { site } from "../data/site";
import { PAGE_SIZE, type Article, type CategoryInfo } from "../lib/articles";
import { PAGE_SIZE, type Article, type CategoryInfo } from "../lib/articles";
interface Props { items: Article[]; categories: CategoryInfo[]; totalCount: number; activeSlug: string | null; activeName: string | null; currentPage: number; lastPage: number; basePath: string; }
interface Props { items: Article[]; categories: CategoryInfo[]; totalCount: number; activeSlug: string | null; activeName: string | null; currentPage: number; lastPage: number; basePath: string; }
const { items, categories, totalCount, activeSlug, activeName, currentPage, lastPage, basePath } = Astro.props as Props;
const { items, categories, totalCount, activeSlug, activeName, currentPage, lastPage, basePath } = Astro.props as Props;
const heading = activeName ?? "银饰
志
";
const heading = activeName ?? "银饰
资讯
";
const pageSuffix = currentPage > 1 ? `|第${currentPage}页` : "";
const pageSuffix = currentPage > 1 ? `|第${currentPage}页` : "";
const title = `${heading}${pageSuffix}|${site.brand.name}`;
const title = `${heading}${pageSuffix}|${site.brand.name}`;
const description = activeName ? `银妆${activeName}分类文章,分享银饰选购、佩戴养护、传统工艺与定制灵感。` : "银妆银饰
志
:关于银饰选购、日常养护、传统银作工艺与私人定制的实用分享。";
const description = activeName ? `银妆${activeName}分类文章,分享银饰选购、佩戴养护、传统工艺与定制灵感。` : "银妆银饰
资讯
:关于银饰选购、日常养护、传统银作工艺与私人定制的实用分享。";
const pageUrl = new URL(`${basePath}${currentPage > 1 ? `/page/${currentPage}` : ""}/`, Astro.site).href;
const pageUrl = new URL(`${basePath}${currentPage > 1 ? `/page/${currentPage}` : ""}/`, Astro.site).href;
const jsonLd = [{ "@context": "https://schema.org", "@type": "CollectionPage", name: heading, description, url: pageUrl, inLanguage: "zh-CN", mainEntity: { "@type": "ItemList", itemListElement: items.map((item, index) => ({ "@type": "ListItem", position: (currentPage - 1) * PAGE_SIZE + index + 1, name: item.data.title, url: new URL(`/articles/${item.id}/`, Astro.site).href })) } }, { "@context": "https://schema.org", "@type": "BreadcrumbList", itemListElement: [{ "@type": "ListItem", position: 1, name: "首页", item: Astro.site?.href }, { "@type": "ListItem", position: 2, name: "银饰
志
", item: new URL("/articles/", Astro.site).href }, ...(activeName ? [{ "@type": "ListItem", position: 3, name: activeName, item: pageUrl }] : [])] }];
const jsonLd = [{ "@context": "https://schema.org", "@type": "CollectionPage", name: heading, description, url: pageUrl, inLanguage: "zh-CN", mainEntity: { "@type": "ItemList", itemListElement: items.map((item, index) => ({ "@type": "ListItem", position: (currentPage - 1) * PAGE_SIZE + index + 1, name: item.data.title, url: new URL(`/articles/${item.id}/`, Astro.site).href })) } }, { "@context": "https://schema.org", "@type": "BreadcrumbList", itemListElement: [{ "@type": "ListItem", position: 1, name: "首页", item: Astro.site?.href }, { "@type": "ListItem", position: 2, name: "银饰
资讯
", item: new URL("/articles/", Astro.site).href }, ...(activeName ? [{ "@type": "ListItem", position: 3, name: activeName, item: pageUrl }] : [])] }];
---
---
<Base {title} {description} {jsonLd}><Header /><main id="main-content"><section class="page-hero article-hero" data-word="JOURNAL"><div class="container page-hero__inner" data-reveal><div class="breadcrumb"><a href="/">首页</a> / <a href="/articles/">银饰
志
</a>{activeName && ` / ${activeName}`}</div><div class="eyebrow"><span></span>INZUNG JOURNAL</div><h1>{heading}</h1><p>{description}</p></div></section><section class="section-pad section-cream"><div class="container"><ArticleListing {items} {categories} {totalCount} {activeSlug} {currentPage} {lastPage} {basePath} /></div></section></main><Footer /></Base>
<Base {title} {description} {jsonLd}><Header /><main id="main-content"><section class="page-hero article-hero" data-word="JOURNAL"><div class="container page-hero__inner" data-reveal><div class="breadcrumb"><a href="/">首页</a> / <a href="/articles/">银饰
资讯
</a>{activeName && ` / ${activeName}`}</div><div class="eyebrow"><span></span>INZUNG JOURNAL</div><h1>{heading}</h1><p>{description}</p></div></section><section class="section-pad section-cream"><div class="container"><ArticleListing {items} {categories} {totalCount} {activeSlug} {currentPage} {lastPage} {basePath} /></div></section></main><Footer /></Base>
src/components/Footer.astro
View file @
86facc5e
...
@@ -9,7 +9,7 @@ import { site } from "../data/site";
...
@@ -9,7 +9,7 @@ import { site } from "../data/site";
<p>让传统锻银技艺承载每一份值得珍藏的心意。</p>
<p>让传统锻银技艺承载每一份值得珍藏的心意。</p>
<div class="footer-tags"><span>足银可复检</span><span>私人定制</span><span>终身养护</span></div>
<div class="footer-tags"><span>足银可复检</span><span>私人定制</span><span>终身养护</span></div>
</div>
</div>
<div><h2>探索银妆</h2><a href="/about/">品牌故事</a><a href="/services/">产品与定制</a><a href="/articles/">银饰
志
</a><a href="/faq/">常见问题</a></div>
<div><h2>探索银妆</h2><a href="/about/">品牌故事</a><a href="/services/">产品与定制</a><a href="/articles/">银饰
资讯
</a><a href="/faq/">常见问题</a></div>
<div><h2>银饰系列</h2>{site.products.map((item) => <a href={`/services/#${item.slug}`}>{item.name}</a>)}</div>
<div><h2>银饰系列</h2>{site.products.map((item) => <a href={`/services/#${item.slug}`}>{item.name}</a>)}</div>
<div class="footer-contact"><h2>联系与到店</h2><a class="footer-phone" href="tel:4008113922">{site.contact.phone}</a><address>{site.contact.address}</address><a class="footer-arrow" href="/contact/">查看联系方式 <span>↗</span></a></div>
<div class="footer-contact"><h2>联系与到店</h2><a class="footer-phone" href="tel:4008113922">{site.contact.phone}</a><address>{site.contact.address}</address><a class="footer-arrow" href="/contact/">查看联系方式 <span>↗</span></a></div>
</div>
</div>
...
...
src/data/site.ts
View file @
86facc5e
...
@@ -118,7 +118,7 @@ export const site = {
...
@@ -118,7 +118,7 @@ export const site = {
{
href
:
"/"
,
label
:
"首页"
,
children
:
[{
href
:
"/#products"
,
label
:
"银饰系列"
},
{
href
:
"/#craft"
,
label
:
"匠心工艺"
},
{
href
:
"/#stories"
,
label
:
"定制场景"
}]
},
{
href
:
"/"
,
label
:
"首页"
,
children
:
[{
href
:
"/#products"
,
label
:
"银饰系列"
},
{
href
:
"/#craft"
,
label
:
"匠心工艺"
},
{
href
:
"/#stories"
,
label
:
"定制场景"
}]
},
{
href
:
"/services/"
,
label
:
"产品与定制"
,
children
:
[{
href
:
"/services/#silver-bracelet"
,
label
:
"足银手镯"
},
{
href
:
"/services/#diy-weaving"
,
label
:
"DIY 编织"
},
{
href
:
"/services/#silver-earrings"
,
label
:
"银耳环"
},
{
href
:
"/services/#silver-necklace"
,
label
:
"银项链"
}]
},
{
href
:
"/services/"
,
label
:
"产品与定制"
,
children
:
[{
href
:
"/services/#silver-bracelet"
,
label
:
"足银手镯"
},
{
href
:
"/services/#diy-weaving"
,
label
:
"DIY 编织"
},
{
href
:
"/services/#silver-earrings"
,
label
:
"银耳环"
},
{
href
:
"/services/#silver-necklace"
,
label
:
"银项链"
}]
},
{
href
:
"/about/"
,
label
:
"关于银妆"
,
children
:
[{
href
:
"/about/#story"
,
label
:
"品牌故事"
},
{
href
:
"/about/#advantages"
,
label
:
"核心优势"
},
{
href
:
"/about/#values"
,
label
:
"品牌初心"
}]
},
{
href
:
"/about/"
,
label
:
"关于银妆"
,
children
:
[{
href
:
"/about/#story"
,
label
:
"品牌故事"
},
{
href
:
"/about/#advantages"
,
label
:
"核心优势"
},
{
href
:
"/about/#values"
,
label
:
"品牌初心"
}]
},
{
href
:
"/articles/"
,
label
:
"银饰
志
"
,
children
:
[{
href
:
"/articles/"
,
label
:
"全部文章"
}]
},
{
href
:
"/articles/"
,
label
:
"银饰
资讯
"
,
children
:
[{
href
:
"/articles/"
,
label
:
"全部文章"
}]
},
{
href
:
"/join/"
,
label
:
"门店与服务"
,
children
:
[{
href
:
"/join/#service-promise"
,
label
:
"服务承诺"
},
{
href
:
"/join/#service-flow"
,
label
:
"定制流程"
},
{
href
:
"/contact/"
,
label
:
"联系门店"
}]
},
{
href
:
"/join/"
,
label
:
"门店与服务"
,
children
:
[{
href
:
"/join/#service-promise"
,
label
:
"服务承诺"
},
{
href
:
"/join/#service-flow"
,
label
:
"定制流程"
},
{
href
:
"/contact/"
,
label
:
"联系门店"
}]
},
{
href
:
"/faq/"
,
label
:
"常见问题"
,
children
:
[{
href
:
"/faq/"
,
label
:
"选购与定制 FAQ"
}]
},
{
href
:
"/faq/"
,
label
:
"常见问题"
,
children
:
[{
href
:
"/faq/"
,
label
:
"选购与定制 FAQ"
}]
},
{
href
:
"/contact/"
,
label
:
"联系我们"
,
children
:
[{
href
:
"/contact/"
,
label
:
"联系方式"
},
{
href
:
"tel:4008113922"
,
label
:
"拨打客服热线"
}]
},
{
href
:
"/contact/"
,
label
:
"联系我们"
,
children
:
[{
href
:
"/contact/"
,
label
:
"联系方式"
},
{
href
:
"tel:4008113922"
,
label
:
"拨打客服热线"
}]
},
...
...
src/pages/admin/index.astro
View file @
86facc5e
...
@@ -4,14 +4,14 @@
...
@@ -4,14 +4,14 @@
<meta
charset=
"utf-8"
/>
<meta
charset=
"utf-8"
/>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1"
/>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1"
/>
<meta
name=
"robots"
content=
"noindex,nofollow"
/>
<meta
name=
"robots"
content=
"noindex,nofollow"
/>
<title>
银妆 · 银饰
志
后台
</title>
<title>
银妆 · 银饰
资讯
后台
</title>
<link
rel=
"stylesheet"
href=
"/admin/style.css"
/>
<link
rel=
"stylesheet"
href=
"/admin/style.css"
/>
</head>
</head>
<body>
<body>
<section
id=
"login"
class=
"login hidden"
>
<section
id=
"login"
class=
"login hidden"
>
<form
id=
"login-form"
class=
"login-card"
>
<form
id=
"login-form"
class=
"login-card"
>
<div
class=
"brand-mark"
>
银妆
</div>
<div
class=
"brand-mark"
>
银妆
</div>
<h1>
银饰
志
后台
</h1>
<h1>
银饰
资讯
后台
</h1>
<p>
输入管理密码和图片验证码,管理官网文章内容。
</p>
<p>
输入管理密码和图片验证码,管理官网文章内容。
</p>
<label>
管理密码
<input
id=
"password"
type=
"password"
autocomplete=
"current-password"
required
/></label>
<label>
管理密码
<input
id=
"password"
type=
"password"
autocomplete=
"current-password"
required
/></label>
<label>
图片验证码
</label>
<label>
图片验证码
</label>
...
@@ -26,7 +26,7 @@
...
@@ -26,7 +26,7 @@
<div
id=
"app"
class=
"hidden"
>
<div
id=
"app"
class=
"hidden"
>
<header
class=
"topbar"
>
<header
class=
"topbar"
>
<div><strong>
银妆
</strong><span>
银饰
志
后台
</span></div>
<div><strong>
银妆
</strong><span>
银饰
资讯
后台
</span></div>
<div
class=
"top-actions"
>
<div
class=
"top-actions"
>
<span
id=
"pending-badge"
class=
"pending-badge hidden"
></span>
<span
id=
"pending-badge"
class=
"pending-badge hidden"
></span>
<a
class=
"button ghost"
href=
"/articles/"
target=
"_blank"
rel=
"noopener"
>
查看前台
</a>
<a
class=
"button ghost"
href=
"/articles/"
target=
"_blank"
rel=
"noopener"
>
查看前台
</a>
...
@@ -35,7 +35,7 @@
...
@@ -35,7 +35,7 @@
</header>
</header>
<main
id=
"list-view"
class=
"view"
>
<main
id=
"list-view"
class=
"view"
>
<div
class=
"view-head"
><div><p>
CONTENT
</p><h1>
银饰
志
</h1></div><div
class=
"view-actions"
><button
id=
"manage-categories"
class=
"ghost"
>
管理分类
</button><button
id=
"new-article"
class=
"primary"
>
+ 新建文章
</button></div></div>
<div
class=
"view-head"
><div><p>
CONTENT
</p><h1>
银饰
资讯
</h1></div><div
class=
"view-actions"
><button
id=
"manage-categories"
class=
"ghost"
>
管理分类
</button><button
id=
"new-article"
class=
"primary"
>
+ 新建文章
</button></div></div>
<div
id=
"article-list"
class=
"article-list"
></div>
<div
id=
"article-list"
class=
"article-list"
></div>
</main>
</main>
...
...
src/pages/articles/[slug].astro
View file @
86facc5e
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
import
Base
from
"../../layouts/Base.astro"
;
import
Header
from
"../../components/Header.astro"
;
import
Footer
from
"../../components/Footer.astro"
;
import
{
site
}
from
"../../data/site"
;
import
{
getPublishedArticle
,
getPublishedArticles
}
from
"../../lib/article-store"
;
import
{
fmtDate
}
from
"../../lib/articles"
;
import
Base
from
"../../layouts/Base.astro"
;
import
Header
from
"../../components/Header.astro"
;
import
Footer
from
"../../components/Footer.astro"
;
import
{
site
}
from
"../../data/site"
;
import
{
getPublishedArticle
,
getPublishedArticles
}
from
"../../lib/article-store"
;
import
{
fmtDate
}
from
"../../lib/articles"
;
type
ArticleDetail
=
NonNullable
<
Awaited
<
ReturnType
<
typeof
getPublishedArticle
>>>
;
type
ArticleDetail
=
NonNullable
<
Awaited
<
ReturnType
<
typeof
getPublishedArticle
>>>
;
export
async
function
getStaticPaths
()
{
const
articles
=
await
getPublishedArticles
();
return
Promise
.
all
(
articles
.
map
(
async
(
article
)
=>
({
params
:
{
slug
:
article
.
id
},
props
:
{
entry
:
await
getPublishedArticle
(
article
.
id
)
}
})));
}
export
async
function
getStaticPaths
()
{
const
articles
=
await
getPublishedArticles
();
return
Promise
.
all
(
articles
.
map
(
async
(
article
)
=>
({
params
:
{
slug
:
article
.
id
},
props
:
{
entry
:
await
getPublishedArticle
(
article
.
id
)
}
})));
}
const
{
entry
}
=
Astro
.
props
as
{
entry
:
ArticleDetail
};
const
article
=
entry
.
data
;
const
date
=
fmtDate
(
article
.
date
);
const
title
=
`${article.title}|银饰
志
|${site.brand.name}`
;
const
pageUrl
=
new
URL
(
`/articles/${entry.id}/`
,
Astro
.
site
)
.
href
;
const
{
entry
}
=
Astro
.
props
as
{
entry
:
ArticleDetail
};
const
article
=
entry
.
data
;
const
date
=
fmtDate
(
article
.
date
);
const
title
=
`${article.title}|银饰
资讯
|${site.brand.name}`
;
const
pageUrl
=
new
URL
(
`/articles/${entry.id}/`
,
Astro
.
site
)
.
href
;
const
jsonLd
=
[{
"@context"
:
"https://schema.org"
,
"@type"
:
"Article"
,
headline
:
article
.
title
,
description
:
article
.
excerpt
,
datePublished
:
date
,
dateModified
:
fmtDate
(
article
.
updated
||
article
.
date
),
articleSection
:
article
.
category
,
inLanguage
:
"zh-CN"
,
author
:
{
"@type"
:
"Organization"
,
name
:
article
.
author
},
publisher
:
{
"@id"
:
new
URL
(
"/#organization"
,
Astro
.
site
)
.
href
},
mainEntityOfPage
:
{
"@type"
:
"WebPage"
,
"@id"
:
pageUrl
},
url
:
pageUrl
},
{
"@context"
:
"https://schema.org"
,
"@type"
:
"BreadcrumbList"
,
itemListElement
:
[{
"@type"
:
"ListItem"
,
position
:
1
,
name
:
"首页"
,
item
:
Astro
.
site
?.
href
},
{
"@type"
:
"ListItem"
,
position
:
2
,
name
:
"银饰
志
"
,
item
:
new
URL
(
"/articles/"
,
Astro
.
site
)
.
href
},
{
"@type"
:
"ListItem"
,
position
:
3
,
name
:
article
.
title
,
item
:
pageUrl
}]
}];
const
jsonLd
=
[{
"@context"
:
"https://schema.org"
,
"@type"
:
"Article"
,
headline
:
article
.
title
,
description
:
article
.
excerpt
,
datePublished
:
date
,
dateModified
:
fmtDate
(
article
.
updated
||
article
.
date
),
articleSection
:
article
.
category
,
inLanguage
:
"zh-CN"
,
author
:
{
"@type"
:
"Organization"
,
name
:
article
.
author
},
publisher
:
{
"@id"
:
new
URL
(
"/#organization"
,
Astro
.
site
)
.
href
},
mainEntityOfPage
:
{
"@type"
:
"WebPage"
,
"@id"
:
pageUrl
},
url
:
pageUrl
},
{
"@context"
:
"https://schema.org"
,
"@type"
:
"BreadcrumbList"
,
itemListElement
:
[{
"@type"
:
"ListItem"
,
position
:
1
,
name
:
"首页"
,
item
:
Astro
.
site
?.
href
},
{
"@type"
:
"ListItem"
,
position
:
2
,
name
:
"银饰
资讯
"
,
item
:
new
URL
(
"/articles/"
,
Astro
.
site
)
.
href
},
{
"@type"
:
"ListItem"
,
position
:
3
,
name
:
article
.
title
,
item
:
pageUrl
}]
}];
---
---
<
Base
{
title
}
description
=
{
article
.
excerpt
}
ogType
=
"article"
{
jsonLd
}
><
Header
/><
main
id
=
"main-content"
class
="
article
-
detail
-
page
"><article><header class="
article
-
detail
-
head
"><div class="
container
article
-
detail
-
head__inner
"><div class="
breadcrumb
"><a href="
/
">首页</a> / <a href="
/
articles
/
">银饰
志</a> /
{
article.category
}
</div><span class="
article
-
detail
-
category
">
{
article.category}</span><h1>{article.title}</h1><p>{article.excerpt
}
</p><div class="
article
-
detail
-
meta
"><time datetime=
{
date}>{date}</time><span>{article.author
}
</span></div></div></header><div class="
container
article
-
detail
-
layout
"><aside><a href="
/
articles
/
">← 返回银饰志
</a><p>银饰材质、价格与售后规则请以实际产品标识和购买门店说明为准。</p></aside><div class="
article
-
prose
" set:html=
{
entry.html
}
></div></div></article></main><Footer /></Base>
<
Base
{
title
}
description
=
{
article
.
excerpt
}
ogType
=
"article"
{
jsonLd
}
><
Header
/><
main
id
=
"main-content"
class
="
article
-
detail
-
page
"><article><header class="
article
-
detail
-
head
"><div class="
container
article
-
detail
-
head__inner
"><div class="
breadcrumb
"><a href="
/
">首页</a> / <a href="
/
articles
/
">银饰
资讯</a> /
{
article.category
}
</div><span class="
article
-
detail
-
category
">
{
article.category}</span><h1>{article.title}</h1><p>{article.excerpt
}
</p><div class="
article
-
detail
-
meta
"><time datetime=
{
date}>{date}</time><span>{article.author
}
</span></div></div></header><div class="
container
article
-
detail
-
layout
"><aside><a href="
/
articles
/
">← 返回银饰资讯
</a><p>银饰材质、价格与售后规则请以实际产品标识和购买门店说明为准。</p></aside><div class="
article
-
prose
" set:html=
{
entry.html
}
></div></div></article></main><Footer /></Base>
src/pages/index.astro
View file @
86facc5e
...
@@ -75,7 +75,7 @@ const jsonLd = { "@context": "https://schema.org", "@type": "WebSite", name: sit
...
@@ -75,7 +75,7 @@ const jsonLd = { "@context": "https://schema.org", "@type": "WebSite", name: sit
<section class="section-pad service-promise-section"><div class="container"><div class="section-intro-row"><SectionHeading eyebrow="OUR PROMISE" title="一件银饰,四重安心" description="从真材实料到长期养护,让购买之后的每一天都更放心。" light /><a class="text-link text-link--light" href="/join/">了解服务体系 <span>↗</span></a></div><div class="promise-grid">{site.promises.map((item) => <article data-reveal><span>{item.number}</span><h3>{item.title}</h3><p>{item.desc}</p></article>)}</div></div></section>
<section class="section-pad service-promise-section"><div class="container"><div class="section-intro-row"><SectionHeading eyebrow="OUR PROMISE" title="一件银饰,四重安心" description="从真材实料到长期养护,让购买之后的每一天都更放心。" light /><a class="text-link text-link--light" href="/join/">了解服务体系 <span>↗</span></a></div><div class="promise-grid">{site.promises.map((item) => <article data-reveal><span>{item.number}</span><h3>{item.title}</h3><p>{item.desc}</p></article>)}</div></div></section>
{latest.length > 0 && <section class="section-pad section-cream"><div class="container"><div class="section-intro-row"><SectionHeading eyebrow="INZUNG JOURNAL" title="银饰
志
" description="关于选购、佩戴、养护与传统银作的实用分享。" /><a class="text-link" href="/articles/">查看全部文章 <span>↗</span></a></div><div class="article-grid">{latest.map((item, index) => <article class="article-card" data-reveal><a href={`/articles/${item.id}/`}><div class="article-card__meta"><span>{item.data.category}</span><time>{fmtDate(item.data.date)}</time></div><div class="article-card__index">0{index + 1}</div><h2>{item.data.title}</h2><p>{item.data.excerpt}</p><strong>阅读全文 ↗</strong></a></article>)}</div></div></section>}
{latest.length > 0 && <section class="section-pad section-cream"><div class="container"><div class="section-intro-row"><SectionHeading eyebrow="INZUNG JOURNAL" title="银饰
资讯
" description="关于选购、佩戴、养护与传统银作的实用分享。" /><a class="text-link" href="/articles/">查看全部文章 <span>↗</span></a></div><div class="article-grid">{latest.map((item, index) => <article class="article-card" data-reveal><a href={`/articles/${item.id}/`}><div class="article-card__meta"><span>{item.data.category}</span><time>{fmtDate(item.data.date)}</time></div><div class="article-card__index">0{index + 1}</div><h2>{item.data.title}</h2><p>{item.data.excerpt}</p><strong>阅读全文 ↗</strong></a></article>)}</div></div></section>}
<CTA />
<CTA />
</main>
</main>
<Footer />
<Footer />
...
...
src/pages/llms.txt.ts
View file @
86facc5e
...
@@ -11,8 +11,8 @@ export async function GET() {
...
@@ -11,8 +11,8 @@ export async function GET() {
`银妆是拥有 14 年行业积淀的银饰连锁品牌,提供足银首饰零售、来料加工、专属雕刻与银饰 DIY 编织服务。`
,
`银妆是拥有 14 年行业积淀的银饰连锁品牌,提供足银首饰零售、来料加工、专属雕刻与银饰 DIY 编织服务。`
,
""
,
""
,
"## 核心页面"
,
"## 核心页面"
,
"- [首页](/)"
,
"- [产品与定制](/services/)"
,
"- [关于银妆](/about/)"
,
"- [门店与服务](/join/)"
,
"- [银饰
志
](/articles/)"
,
"- [常见问题](/faq/)"
,
"- [联系我们](/contact/)"
,
"- [首页](/)"
,
"- [产品与定制](/services/)"
,
"- [关于银妆](/about/)"
,
"- [门店与服务](/join/)"
,
"- [银饰
资讯
](/articles/)"
,
"- [常见问题](/faq/)"
,
"- [联系我们](/contact/)"
,
""
,
"## 银饰
志
"
,
""
,
"## 银饰
资讯
"
,
...
articles
.
map
((
article
)
=>
`- [
${
article
.
data
.
title
}
](/articles/
${
article
.
id
}
/):
${
article
.
data
.
excerpt
}
`
),
...
articles
.
map
((
article
)
=>
`- [
${
article
.
data
.
title
}
](/articles/
${
article
.
id
}
/):
${
article
.
data
.
excerpt
}
`
),
""
,
`客服电话:
${
site
.
contact
.
phone
}
`
,
`公司地址:
${
site
.
contact
.
address
}
`
,
""
,
`客服电话:
${
site
.
contact
.
phone
}
`
,
`公司地址:
${
site
.
contact
.
address
}
`
,
];
];
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment