<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ladder on Spoon</title><link>https://hugo-theme-spoon.vercel.app/zh/tags/ladder/</link><description>Recent content in Ladder on Spoon created by</description><generator>Hugo -- gohugo.io</generator><language>zh</language><managingEditor>noneback@example.com (NoneBack)</managingEditor><webMaster>noneback@example.com (NoneBack)</webMaster><copyright>2024 NoneBack All rights reserved</copyright><lastBuildDate>Sun, 14 Aug 2022 21:34:36 +0800</lastBuildDate><atom:link href="https://hugo-theme-spoon.vercel.app/zh/tags/ladder/index.xml" rel="self" type="application/rss+xml"/><item><title>如何零成本给博客集成 umami 数据统计分析功能</title><link>https://hugo-theme-spoon.vercel.app/zh/blog/zh/how-to-integrate-umami-for-free-to-blog-site/</link><pubDate>Sun, 14 Aug 2022 21:34:36 +0800</pubDate><author>noneback@example.com (NoneBack)</author><guid>https://hugo-theme-spoon.vercel.app/zh/blog/zh/how-to-integrate-umami-for-free-to-blog-site/</guid><description>&lt;p&gt;本篇文章介绍如何零成本给博客或者网站集成 &lt;a href="https://umami.is/"&gt;umami&lt;/a&gt; 统计功能。数据库用的是 &lt;a href="https://app.supabase.com/"&gt;supabase&lt;/a&gt; 提供的有限额的 &lt;a href="https://supabase.com/docs/guides/database"&gt;postgres&lt;/a&gt;，不过免费提供的 500M 对于 &lt;a href="https://umami.is/"&gt;umami&lt;/a&gt; 来讲已经足够了。&lt;/p&gt;
&lt;p&gt;托管 &lt;a href="https://umami.is/"&gt;umami&lt;/a&gt; 服务用的是 &lt;a href="https://vercel.com/"&gt;vercel&lt;/a&gt;。得益于现在的云厂商优秀的服务能力，你可以在 10 分钟内集成好 &lt;em&gt;umami&lt;/em&gt;。可以点击 &lt;a href="https://umami-ochre-nu.vercel.app/share/o3zAba1V/guangzhengli"&gt;数据统计看板&lt;/a&gt; 查看最终效果。&lt;/p&gt;
&lt;h2 id="创建数据库"&gt;创建数据库&lt;/h2&gt;
&lt;p&gt;数据库用的是 &lt;a href="https://app.supabase.com/"&gt;supabase&lt;/a&gt; 提供的有限额的 &lt;a href="https://supabase.com/docs/guides/database"&gt;postgres&lt;/a&gt; 数据库，创建一个 supabase 账号，新建一个项目，输入 Datebase password 即可创建数据库服务。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.jsdelivr.net/gh/guangzhengli/PicURL@master/uPic/cN3Zg4.png" alt="cN3Zg4" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;创建可能会话费几分钟时间，创建完成后只需要拿到 &lt;code&gt;DATABASE_URL&lt;/code&gt; 即可。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.jsdelivr.net/gh/guangzhengli/PicURL@master/uPic/image-20220815182141638.png" alt="image-20220815182141638" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;h2 id="托管-umami"&gt;托管 umami&lt;/h2&gt;
&lt;p&gt;托管 &lt;a href="https://umami.is/"&gt;umami&lt;/a&gt; 服务用的是 &lt;a href="https://vercel.com/"&gt;vercel&lt;/a&gt;。创建好数据库实例之后，可以通过 Vercel 一键部署 umami 服务了。访问 &lt;a href="https://umami.is/"&gt;umami 官方文档&lt;/a&gt; 的 &lt;a href="https://umami.is/docs/running-on-vercel"&gt;Running on Vercel&lt;/a&gt; 模块，有操作说明与一键部署脚本。&lt;/p&gt;
&lt;p&gt;首先我们登录 GitHub 账号， &lt;code&gt;fork&lt;/code&gt; umami (&lt;a href="https://github.com/umami-software/umami"&gt;https://github.com/umami-software/umami&lt;/a&gt;) 项目。&lt;/p&gt;
&lt;p&gt;登录 &lt;a href="https://vercel.com/"&gt;vercel&lt;/a&gt; ，创建一个的账号，建议使用 GitHub 账号注册登录，在 &lt;code&gt;new project&lt;/code&gt; 中选择 &lt;code&gt;import&lt;/code&gt; 你刚刚 &lt;code&gt;fork&lt;/code&gt; 的项目。&lt;/p&gt;
&lt;p&gt;之后填写环境变量，这里我们需要填写两个环境变量&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DATABASE_URL：在创建数据库中拿到的 DATABASE_URL&lt;/li&gt;
&lt;li&gt;TRACKER_SCRIPT_NAME： 这里默认的 &lt;code&gt;tracker_script_name&lt;/code&gt; 可能会导致部分 &lt;code&gt;AdBlock&lt;/code&gt; 拦截请求，损失一部分的访问数据，所以这里我填的是 &lt;code&gt;hugo-ladder&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最后在 Build 阶段， &lt;code&gt;build command&lt;/code&gt; 记得填写 &lt;code&gt;yarn build &amp;amp;&amp;amp; yarn update-db&lt;/code&gt;，这样的话会自动 migrate 数据库的表。无需自己手动导入。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.jsdelivr.net/gh/guangzhengli/PicURL@master/uPic/gePzXI.png" alt="gePzXI" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;当然如果你想自己导入的话，也可以直接从这里 &lt;a href="https://github.com/umami-software/umami/blob/master/sql/schema.postgresql.sql"&gt;https://github.com/umami-software/umami/blob/master/sql/schema.postgresql.sql&lt;/a&gt; 获取需要的表。&lt;/p&gt;
&lt;h2 id="配置-umami"&gt;配置 umami&lt;/h2&gt;
&lt;p&gt;在 vercel 部署完成 umami 后会得到一个 &lt;code&gt;&amp;lt;deploy-id&amp;gt;.vercel.app&lt;/code&gt; ，我们访问它，默认的账号密码是 &lt;strong&gt;admin&lt;/strong&gt; 和 &lt;strong&gt;umami&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;完成基础帐号配置后，点击侧边栏网站 Tab，点击添加网站。填写网站基本信息，可以勾选 &lt;code&gt;enable share URL&lt;/code&gt;，这样任何人都可以访问这个数据看板。&lt;/p&gt;
&lt;p&gt;我们拿到对应的 &lt;code&gt;data-website-id&lt;/code&gt; 和 &lt;code&gt;src&lt;/code&gt; ，填入主题配置中的 &lt;code&gt;params.analytics.umami.website_id&lt;/code&gt; 和 &lt;code&gt;params.analytics.umami.url&lt;/code&gt; 即可。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn.jsdelivr.net/gh/guangzhengli/PicURL@master/uPic/OZcU7U.png" alt="OZcU7U" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;最终，我们可以得到本站数据统计看板的功能🎉🎉🎉&lt;/p&gt;
&lt;p&gt;原文链接: &lt;a href="https://guangzhengli.com/zh/blog/zh/how-to-integrate-umami-for-free-to-blog-site/"&gt;https://guangzhengli.com/zh/blog/zh/how-to-integrate-umami-for-free-to-blog-site/&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Rich Content</title><link>https://hugo-theme-spoon.vercel.app/zh/blog/zh/rich-content/</link><pubDate>Mon, 18 Jul 2022 20:29:08 +0000</pubDate><author>noneback@example.com (NoneBack)</author><guid>https://hugo-theme-spoon.vercel.app/zh/blog/zh/rich-content/</guid><description>&lt;h2 id="figure"&gt;figure&lt;/h2&gt;
&lt;h2 id="ref-in-posts"&gt;ref in posts&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://hugo-theme-spoon.vercel.app/zh/blog/zh/how-to-create-your-blog-for-free-by-hugo-ladder-in-30min/"&gt;Neat&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="hide-toggle"&gt;hide toggle&lt;/h2&gt;
&lt;p&gt;
&lt;details class="toggle"&gt;
&lt;summary markdown="span"&gt;summary&lt;/summary&gt;
&lt;div class="code-block" data-language="shell"&gt;
&lt;div class="code-block-header"&gt;
&lt;div class="code-block-meta"&gt;
&lt;span class="code-block-language"&gt;shell&lt;/span&gt;
&lt;/div&gt;
&lt;div class="code-block-actions"&gt;
&lt;button class="copy-code" type="button" aria-label="复制"&gt;复制&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hide value&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/p&gt;
&lt;h3 id="without-summary"&gt;without summary&lt;/h3&gt;
&lt;p&gt;
&lt;details class="toggle"&gt;
&lt;summary markdown="span"&gt;Toggle&lt;/summary&gt;
&lt;div class="code-block" data-language="shell"&gt;
&lt;div class="code-block-header"&gt;
&lt;div class="code-block-meta"&gt;
&lt;span class="code-block-language"&gt;shell&lt;/span&gt;
&lt;/div&gt;
&lt;div class="code-block-actions"&gt;
&lt;button class="copy-code" type="button" aria-label="复制"&gt;复制&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hide value&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;/p&gt;
&lt;h2 id="tab-group-code"&gt;tab group code&lt;/h2&gt;
&lt;div class="tabs tabs-left"&gt;
&lt;style&gt;
.tabs input#tab-0-0:checked ~ .tab-content-0-0 {
display: block;
}
&lt;/style&gt;
&lt;input type="radio" class="tab-input" name="tab-select-0" id="tab-0-0" checked/&gt;
&lt;label for="tab-0-0" class="tab-label"&gt;Hello&lt;/label&gt;
&lt;div class="tab-content tab-content-0-0"&gt;
&lt;div class="code-block" data-language="shell"&gt;
&lt;div class="code-block-header"&gt;
&lt;div class="code-block-meta"&gt;
&lt;span class="code-block-language"&gt;shell&lt;/span&gt;
&lt;/div&gt;
&lt;div class="code-block-actions"&gt;
&lt;button class="copy-code" type="button" aria-label="复制"&gt;复制&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Hello World!&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;style&gt;
.tabs input#tab-0-1:checked ~ .tab-content-0-1 {
display: block;
}
&lt;/style&gt;
&lt;input type="radio" class="tab-input" name="tab-select-0" id="tab-0-1" /&gt;
&lt;label for="tab-0-1" class="tab-label"&gt;Goodbye&lt;/label&gt;
&lt;div class="tab-content tab-content-0-1"&gt;
&lt;div class="code-block" data-language="shell"&gt;
&lt;div class="code-block-header"&gt;
&lt;div class="code-block-meta"&gt;
&lt;span class="code-block-language"&gt;shell&lt;/span&gt;
&lt;/div&gt;
&lt;div class="code-block-actions"&gt;
&lt;button class="copy-code" type="button" aria-label="复制"&gt;复制&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Goodbye Everybody!&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="tab-group"&gt;tab group&lt;/h2&gt;
&lt;div class="tabs tabs-left"&gt;
&lt;style&gt;
.tabs input#tab-1-0:checked ~ .tab-content-1-0 {
display: block;
}
&lt;/style&gt;
&lt;input type="radio" class="tab-input" name="tab-select-1" id="tab-1-0" checked/&gt;
&lt;label for="tab-1-0" class="tab-label"&gt;MacOS&lt;/label&gt;
&lt;div class="tab-content tab-content-1-0"&gt;
brew install hugo
&lt;/div&gt;
&lt;style&gt;
.tabs input#tab-1-1:checked ~ .tab-content-1-1 {
display: block;
}
&lt;/style&gt;
&lt;input type="radio" class="tab-input" name="tab-select-1" id="tab-1-1" /&gt;
&lt;label for="tab-1-1" class="tab-label"&gt;Linux&lt;/label&gt;
&lt;div class="tab-content tab-content-1-1"&gt;
apt install hugo
&lt;/div&gt;
&lt;style&gt;
.tabs input#tab-1-2:checked ~ .tab-content-1-2 {
display: block;
}
&lt;/style&gt;
&lt;input type="radio" class="tab-input" name="tab-select-1" id="tab-1-2" /&gt;
&lt;label for="tab-1-2" class="tab-label"&gt;Window&lt;/label&gt;
&lt;div class="tab-content tab-content-1-2"&gt;
window install hugo
&lt;/div&gt;
&lt;/div&gt;</description></item></channel></rss>