<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>场景组件 on OINK</title>
    <link>https://oink.pgsty.com/zh/categories/%E5%9C%BA%E6%99%AF%E7%BB%84%E4%BB%B6/</link>
    <description>Recent content in 场景组件 on OINK</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    
    
    
      <lastBuildDate>Fri, 14 Aug 2026 21:56:46 +0800</lastBuildDate>
    
    
      <atom:link href="https://oink.pgsty.com/zh/categories/%E5%9C%BA%E6%99%AF%E7%BB%84%E4%BB%B6/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>顺序阅读与数学公式</title>
        <link>https://oink.pgsty.com/zh/docs/scenarios/reading/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/zh/docs/scenarios/reading/</guid>
        <description>&lt;p&gt;Oink&#xA;0.4.0 为手册、Book 与博客定义了明确的阅读序列，并把服务端数学公式渲染纳入正式内容路径。&lt;/p&gt;&#xA;&lt;h2 id=&#34;configure-pager&#34;&gt;启用或收窄翻页范围&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#configure-pager&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;docs&lt;/code&gt;、&lt;code&gt;book&lt;/code&gt; 与 &lt;code&gt;blog&lt;/code&gt;&#xA;内容类型默认启用翻页。站点只使用其中一部分时，可以显式替换这个集合：&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-2b3b47d8-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-language=&#34;yaml&#34; data-line-count=&#34;4&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;&#xA;  &lt;span class=&#34;td-code__language&#34;&gt;YAML&lt;/span&gt;&#xA;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-2b3b47d8-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;params&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ui&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;pager&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;types&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;l&#34;&gt;docs, book, blog]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;只允许这三个类型名。页面或分区可以使用布尔型 front matter 退出序列：&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-2b3b47d8-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-language=&#34;yaml&#34; data-line-count=&#34;3&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;&#xA;  &lt;span class=&#34;td-code__language&#34;&gt;YAML&lt;/span&gt;&#xA;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-2b3b47d8-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nn&#34;&gt;---&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;pager&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nn&#34;&gt;---&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;交互式 HTML 只渲染实际存在的上一页或下一页，并在页面 &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; 中添加匹配的&#xA;&lt;code&gt;&amp;lt;link rel=&amp;quot;prev&amp;quot;&amp;gt;&lt;/code&gt; 与&#xA;&lt;code&gt;&amp;lt;link rel=&amp;quot;next&amp;quot;&amp;gt;&lt;/code&gt;。print、Markdown 和 RSS 不包含翻页标记或关系。&lt;/p&gt;&#xA;&lt;h2 id=&#34;reading-order&#34;&gt;理解阅读顺序&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#reading-order&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;文档与 Book 按 &lt;strong&gt;侧栏同一导航根&lt;/strong&gt;&#xA;做前序遍历：分区首页先于其可见子项，普通子项按 weight 排序。站点使用&#xA;&lt;code&gt;data/docs_nav.json&lt;/code&gt; 显式定义内容树时，这棵树同时是侧栏与翻页的权威来源。&lt;/p&gt;&#xA;&lt;p&gt;以下条目可以显示在导航中，但不会成为翻页目的地：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;使用 &lt;code&gt;toc_hide&lt;/code&gt; 隐藏的页面；&lt;/li&gt;&#xA;&lt;li&gt;使用 &lt;code&gt;manualLink&lt;/code&gt; 或 &lt;code&gt;manualLinkRelref&lt;/code&gt; 的纯链接占位页面；&lt;/li&gt;&#xA;&lt;li&gt;标记为 &lt;code&gt;sidebar_divider: true&lt;/code&gt; 的不可点击分组行。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;博客保留 Hugo 的分区时间顺序，刻意不沿用手册树顺序。&lt;/p&gt;</description>
      </item>
    <item>
        <title>版本发布与下载</title>
        <link>https://oink.pgsty.com/zh/docs/scenarios/releases/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/zh/docs/scenarios/releases/</guid>
        <description>&lt;p&gt;Oink 把不可变的发布事实与呈现方式分开。发布页面拥有版本与仓库身份，本地下载数据拥有分发渠道；卡片、列表、校验和表、文档页与 Landing 页面都从这些记录推导，不必在多个模板中重复复制 URL 与命令。&lt;/p&gt;&#xA;&lt;h2 id=&#34;release-facts&#34;&gt;定义发布事实&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#release-facts&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;在页面 front matter 中添加严格的 &lt;code&gt;release&lt;/code&gt; Map：&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-4763fb12-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-language=&#34;yaml&#34; data-line-count=&#34;8&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;&#xA;  &lt;span class=&#34;td-code__language&#34;&gt;YAML&lt;/span&gt;&#xA;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-4763fb12-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;release&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;product&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;Pig&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1.7.0&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;repo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;pgsty/pig&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;tag&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;v1.7.0&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;ld&#34;&gt;2026-08-14&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;prev&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;v1.6.0&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;checksums&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;SHA256SUMS&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;code&gt;version&lt;/code&gt; 与 &lt;code&gt;repo&lt;/code&gt; 必填。省略 &lt;code&gt;tag&lt;/code&gt; 时推导为 &lt;code&gt;v{version}&lt;/code&gt;；省略 &lt;code&gt;date&lt;/code&gt;&#xA;时使用页面日期。可选的 &lt;code&gt;product&lt;/code&gt;、&lt;code&gt;prev&lt;/code&gt; 与 &lt;code&gt;checksums&lt;/code&gt;&#xA;用于补全记录。未知键、错误类型或不符合 &lt;code&gt;owner/name&lt;/code&gt; 形式的仓库都会让构建失败。&lt;/p&gt;&#xA;&lt;p&gt;简单的 GitHub 发布也可以使用精确标签 URL 简写：&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-4763fb12-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-language=&#34;yaml&#34; data-line-count=&#34;1&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;&#xA;  &lt;span class=&#34;td-code__language&#34;&gt;YAML&lt;/span&gt;&#xA;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-4763fb12-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;release&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;https://github.com/pgsty/pig/releases/tag/v1.7.0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Oink 在本地推导仓库、发布、归档、diff、校验和与资产链接。构建时不调用 GitHub，也不会声称某个标签或资产已经远程存在。&lt;/p&gt;</description>
      </item>
    <item>
        <title>Landing 页面</title>
        <link>https://oink.pgsty.com/zh/docs/scenarios/landing/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/zh/docs/scenarios/landing/</guid>
        <description>&lt;p&gt;Landing 页面是使用全宽场景外壳的普通 Hugo 内容页。它保留站点顶部导航栏、命令面板与已配置页脚，同时移除文档侧栏和目录栏。内容仍然位于本地并由服务端渲染，不需要前端构建或远程事实 API。&lt;/p&gt;&#xA;&lt;p&gt;首页继续使用&#xA;&lt;code&gt;data/home/&amp;lt;lang&amp;gt;.yaml&lt;/code&gt;，但内部已经与普通 Landing 页面共用渲染器与分区契约。&lt;/p&gt;&#xA;&lt;h2 id=&#34;create-a-landing-page&#34;&gt;创建 Landing 页面&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#create-a-landing-page&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;创建普通内容文件，并指定本地数据键：&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-dd5f81e2-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-language=&#34;yaml&#34; data-line-count=&#34;6&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;&#xA;  &lt;span class=&#34;td-code__language&#34;&gt;YAML&lt;/span&gt;&#xA;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-dd5f81e2-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nn&#34;&gt;---&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;定价&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;layout&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;landing&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;landing&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;pricing&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;outputs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;l&#34;&gt;HTML, print, markdown]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nn&#34;&gt;---&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;把中英文叙事数据放在独立文件中：&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-dd5f81e2-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-language=&#34;text&#34; data-line-count=&#34;5&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;&#xA;  &lt;span class=&#34;td-code__language&#34;&gt;TEXT&lt;/span&gt;&#xA;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-dd5f81e2-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;data/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── landing/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    └── pricing/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        ├── en.yaml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        └── zh.yaml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;非首页 Landing 按以下顺序解析数据：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;直接写在页面 front matter 中的 &lt;code&gt;sections&lt;/code&gt;；&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;data/landing/&amp;lt;key&amp;gt;/&amp;lt;精确语言&amp;gt;.yaml&lt;/code&gt;；&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;data/landing/&amp;lt;key&amp;gt;.yaml&lt;/code&gt; 中的精确语言记录；&lt;/li&gt;&#xA;&lt;li&gt;英文或无后缀的本地记录。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;叙事内容优先使用分语言文件。共享事实字段可以依次使用精确语言后缀、主语言后缀与无后缀回退；语言标签中的&#xA;&lt;code&gt;-&lt;/code&gt; 会规范化为 &lt;code&gt;_&lt;/code&gt;。例如先尝试 &lt;code&gt;title_zh_cn&lt;/code&gt;，再尝试 &lt;code&gt;title_zh&lt;/code&gt;，最后使用&#xA;&lt;code&gt;title&lt;/code&gt;。不接受 camelCase 后缀别名。&lt;/p&gt;</description>
      </item>
    <item>
        <title>Book 出版</title>
        <link>https://oink.pgsty.com/zh/docs/scenarios/book/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/zh/docs/scenarios/book/</guid>
        <description>&lt;p&gt;Oink 的 Book 能力扩展现有文档外壳，沿用内容树或&#xA;&lt;code&gt;data/docs_nav.json&lt;/code&gt;、面包屑导航、翻页与感知输出的组件体系，不会引入第二份章节清单或平行导航实现。&lt;/p&gt;&#xA;&lt;h2 id=&#34;book-root&#34;&gt;创建 Book 根页面&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#book-root&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;分区 Book 声明类型、请求所需输出，并把类型级联到后代：&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-abc27386-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-language=&#34;yaml&#34; data-line-count=&#34;9&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;&#xA;  &lt;span class=&#34;td-code__language&#34;&gt;YAML&lt;/span&gt;&#xA;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-abc27386-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nn&#34;&gt;---&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;系统手册&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;book&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;book_kind&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;book&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;book_number&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;B&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;outputs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;l&#34;&gt;HTML, print, markdown]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;cascade&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;book&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nn&#34;&gt;---&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;即使站点启用了侧栏根切换器，Book 根始终是当前一级分区，因此导航不会泄漏到同级文档或博客。站点覆盖&#xA;&lt;code&gt;params.ui.shell_types&lt;/code&gt; 时，请保留 &lt;code&gt;book&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;p&gt;必须显式请求&#xA;&lt;code&gt;print&lt;/code&gt;：Oink 不会擅自给消费站增加昂贵的聚合输出。分区 Book 对应 Hugo 的&#xA;&lt;code&gt;section&lt;/code&gt; 输出类型；只有 Book 位于站点根时才使用 &lt;code&gt;home&lt;/code&gt;：&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-abc27386-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-language=&#34;yaml&#34; data-line-count=&#34;7&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;&#xA;  &lt;span class=&#34;td-code__language&#34;&gt;YAML&lt;/span&gt;&#xA;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-abc27386-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;outputs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;section&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;l&#34;&gt;HTML, print]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;params&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ui&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;shell_types&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;l&#34;&gt;docs, book, blog, swagger]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;sidebar_headings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;book_draft_banner&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;code&gt;sidebar_headings&lt;/code&gt; 接受 &lt;code&gt;false&lt;/code&gt;、表示二级标题的&#xA;&lt;code&gt;true&lt;/code&gt;，或 2 到 4 之间的最大标题层级；它会把当前页的 Hugo&#xA;fragment 树投射到章节行下。所有需要引用的标题都应使用显式 ID：&lt;/p&gt;</description>
      </item>
    <item>
        <title>场景组件</title>
        <link>https://oink.pgsty.com/zh/docs/scenarios/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://oink.pgsty.com/zh/docs/scenarios/</guid>
        <description>&lt;p&gt;场景组件解决的是一项完整的出版任务，而不是页面中的一个片段。每种场景都用一套严格契约，协同组织内容、本地数据、导航、运行时加载、无障碍与非 HTML 输出。&lt;/p&gt;&#xA;&lt;p&gt;它与&lt;a href=&#34;https://oink.pgsty.com/zh/docs/components/&#34;&gt;组件参考&lt;/a&gt;互为补充：查单个写作原语时看组件参考；当任务跨越多个页面、文件或输出格式时看本章。&lt;/p&gt;&#xA;&lt;h2 id=&#34;choose-a-scenario&#34;&gt;选择场景&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#choose-a-scenario&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;场景&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;适用任务&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;主要事实来源&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;a href=&#34;https://oink.pgsty.com/zh/docs/scenarios/reading/&#34;&gt;顺序阅读&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;手册、Book 或博客需要可靠的阅读顺序&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;侧栏/内容树与页面元数据&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;a href=&#34;https://oink.pgsty.com/zh/docs/scenarios/releases/&#34;&gt;版本发布与下载&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;发布事实、资产与安装路径必须保持一致&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;front matter 与 &lt;code&gt;data/download/&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;a href=&#34;https://oink.pgsty.com/zh/docs/scenarios/landing/&#34;&gt;Landing 页面&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;产品页面需要可复用的全宽分区&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;data/landing/&lt;/code&gt; 或内联分区数据&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;a href=&#34;https://oink.pgsty.com/zh/docs/scenarios/book/&#34;&gt;Book 出版&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;长篇内容需要编号、引用与整本打印&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;既有 Book 内容树与稳定页面 ID&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;shared-guarantees&#34;&gt;共同保证&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#shared-guarantees&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;本地事实&lt;/strong&gt;：正常构建不会通过远程 API 获取发布状态、star、价格、截图、头像或其他易变事实。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;静态优先&lt;/strong&gt;：渐进增强前的 HTML 已包含完整内容；页面只加载自己确实使用的 JavaScript。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;严格输入&lt;/strong&gt;：参数、标识符、URL、校验和或数据记录非法时，构建会在对应源码位置失败。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;感知输出&lt;/strong&gt;：HTML、print、Markdown 与 RSS 要么得到明确的呈现，要么有意省略只用于交互的内容。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;单一导航事实源&lt;/strong&gt;：可见内容树同时驱动翻页、Book 目录与整本打印顺序。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;多语言安全&lt;/strong&gt;：共享事实按文档规定的后缀回退；叙事数据可以按语言独立维护。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;before-adoption&#34;&gt;采用之前&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#before-adoption&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;请固定拥有这些契约的最低版本：&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-7ff5b0e5-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-language=&#34;go&#34; data-line-count=&#34;1&#34;&gt;&lt;div class=&#34;td-code__utilities td-code__utilities--compact&#34;&gt;&#xA;  &lt;span class=&#34;td-code__language&#34;&gt;GO&lt;/span&gt;&#xA;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-7ff5b0e5-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;require&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;github&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;pgsty&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;oink&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;v0&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;.4.1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;使用 Hugo Extended&#xA;0.160.1 或更新版本。一次采用一种场景，构建所有已配置输出，并检查每种语言。本地构建、公开主题标签、站点版本固定与线上部署是不同的证据门禁，不要互相代替。&lt;/p&gt;&#xA;&lt;p&gt;既有 Oink 站点请先阅读 &lt;a href=&#34;https://oink.pgsty.com/zh/docs/upgrade/v0-4/&#34;&gt;0.4.0 升级指南&lt;/a&gt;。&lt;/p&gt;</description>
      </item>
    
  </channel>
</rss>
