Subscribe
Subscribe
Subscribe to new posts via RSS/Atom. Works with Follow, Feedly, Inoreader and most readers.
https://lonetrail.pages.dev/en/atom.xml
● XML / Atom 1.0● 541 lines● Full Content
atom.xml
541 lines1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<id>https://lonetrail.pages.dev/en/</id>
<title>Lonetrail</title>
<updated>2026-02-28T16:00:00.000Z</updated>
<generator>Astro - Feed Library</generator>
<author>
<name>Lonetrail</name>
<email>i@chongxi.us</email>
<uri>https://lonetrail.pages.dev/</uri>
</author>
<link rel="alternate" href="https://lonetrail.pages.dev/en/"/>
<link rel="self" href="https://lonetrail.pages.dev/en/atom.xml"/>
<subtitle>Ad Astra Per Aspera</subtitle>
<icon>https://lonetrail.pages.dev/favicon.ico</icon>
<rights>All rights reserved 2026, Lonetrail</rights>
<entry>
<title type="html"><![CDATA[Configuring Lonetrail]]></title>
<id>https://lonetrail.pages.dev/en/posts/customize/</id>
<link href="https://lonetrail.pages.dev/en/posts/customize/"/>
<updated>2026-02-28T16:00:00.000Z</updated>
<summary type="html"><![CDATA[Site metadata, navigation and profile live in site.yml; feature flags and third-party integrations live in config.ts.]]></summary>
<content type="html"><![CDATA[<h2>Two layers of configuration</h2>
<table>
<thead>
<tr>
<th>File</th>
<th>Holds</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>src/site.yml</code></td>
<td>Title, subtitle, URL, author, navigation, social links, copyright, trusted domains, taxonomy labels</td>
</tr>
<tr>
<td><code>src/config.ts</code></td>
<td>Locale routing, feature flags (search, comments, analytics), Twikoo / Umami parameters</td>
</tr>
</tbody>
</table>
<p><code>src/config.ts</code> reads <code>site.yml</code> and exports <code>siteConfig</code> / <code>navBarConfig</code> / <code>profileConfig</code>, so components never touch the raw YAML.</p>
<h2>site.yml</h2>
<pre><code class="language-yaml">site:
title: "Lonetrail"
title_en: "Lonetrail"
subtitle: "循此苦旅 直抵群星"
subtitle_en: "Ad Astra Per Aspera"
description: "一个关于代码、安全与网络的个人笔记本。"
description_en: "A personal notebook on code, security and the web."
url: "https://lonetrail.pages.dev"
lang: "zh_CN"
author: "Lonetrail"
email: "i@chongxi.us"
favicon: "/images/favicon.webp"
banner: "/images/banner.webp"
og_image: "/images/og.webp"
avatar: "/images/avatar.webp"
</code></pre>
<p>Bilingual fields come in pairs. The English site reads <code>*_en</code> and falls back to the default value when it is empty.</p>
<p><code>url</code> also drives <code>site</code> and the image allow-list in <code>astro.config.mjs</code>, so changing the domain is a one-line edit.</p>
<h3>Navigation</h3>
<p>Nav entries reference built-in labels by <code>key</code>, so they translate automatically:</p>
<pre><code class="language-yaml">nav:
- key: home
url: "/"
- key: archive
url: "/archive/"
- key: series
url: "/seri/"
- key: essays
url: "/essays/"
- key: about
url: "/about/"
</code></pre>
<p>Available keys: <code>home</code>, <code>archive</code>, <code>series</code>, <code>essays</code>, <code>about</code>, <code>subscribe</code>. Custom links use <code>name</code> instead:</p>
<pre><code class="language-yaml">nav:
- name: "Notes"
url: "/notes/"
</code></pre>
<h3>Taxonomy labels</h3>
<p>Translated labels are display-only — URLs and filters keep the canonical name:</p>
<pre><code class="language-yaml">taxonomy:
tags:
"技术": "Technology"
categories:
"技术": "Technology"
</code></pre>
<h2>config.ts</h2>
<pre><code class="language-ts">export const localeConfig = {
defaultLocale: "zh",
locales: ["zh", "en"],
translatedPaths: ["/", "/archive/", "/about/", "/subscribe/", "/essays/"],
};
export const featureConfig = {
comments: true,
search: true,
analytics: "none",
};
export const integrationConfig = {
twikoo: { envId: "" },
umami: { websiteId: "", domains: "" },
};
</code></pre>
<ul>
<li><code>translatedPaths</code> — pages that have a real English version; every other <code>/en/</code> route is a fallback of the Chinese page and is marked noindex</li>
<li><code>featureConfig.comments</code> — turn off to drop the comment section</li>
<li><code>featureConfig.search</code> — turn off to skip mounting the search panel</li>
<li><code>featureConfig.analytics</code> — set to <code>"umami"</code> and fill <code>umami.websiteId</code> to load the script</li>
<li><code>integrationConfig.twikoo.envId</code> — leave empty to skip comments entirely</li>
</ul>
<h2>Post frontmatter</h2>
<pre><code class="language-yaml">---
title: "Post title"
published: 2026-01-15
updated: 2026-02-01
description: "One-line summary"
tags: ["tag-one", "tag-two"]
Preview of the first 120 lines · 541 lines total ·View full file →
● Feed● UTF-8● Read Only
Copy the URL above into your RSS reader to subscribe. Works with Follow, Feedly, Inoreader, NetNewsWire and most readers.
