沉浸式写作Zen网页嵌入博客记录


网上看到一个很简单纯粹的写作页面,觉得很不错,想摘下来做成一个单独的源码包,既可以上传到仓库做成一个项目,供其他人搭建一个单独的写作页面,也用来给自己嵌入到博客网站。

网页地址:Zen

网页下载及修改

进入页面https://zen.unit.ms,查看源码(ctrl+U)把代码给全部下载至本地,Zen.html。

VS code打开Zen.html,删除谷歌统计的无用脚本,将其他Css、Js、音频文件、图片Logo等网页路径资源全部下载到本地,并按代码中的路径存放,保证代码中的路径与文件一致。

里面的音频文件在html页面找不到,记录在js/bundle.js里面,而这个文件被压缩了,不便于查找;

我使用手机浏览器Via进入页面使用资源嗅探,找到三个音频文件路径:

https://zen.unit.ms/sfx/manual_key.ogg
https://zen.unit.ms/sfx/manual_return.ogg
https://zen.unit.ms/sfx/manual_space.ogg

同样,把这三个文件下载下来,并保存在根目录下的sfx文件下即可正常听到打字的声音。

文件目录结构如下:

目录结构

修改代码如下:

<!DOCTYPE html>
<html>
    <head>
        <!-- MISC/META -->
        <title>Zen - Online Text Editor</title>
    <meta charset="utf-8">
        <meta name="description" content="Zen by Unit is a free, minimal, fast, private writing app. Just open and use.">
        <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, initial-scale=1.0" />

        <!-- CSS -->
        <link href="css/zencss.css" rel="stylesheet">
        <link href="css/style.css" rel="stylesheet" media="all">

        <!-- Icon -->
        <link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png">
        <link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png">
        <link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png">
        <link rel="manifest" href="site.webmanifest">
        <link rel="mask-icon" href="safari-pinned-tab.svg" color="#5bbad5">
        <meta name="msapplication-TileColor" content="#da532c">
        <meta name="theme-color" content="#ffffff">
  </head>

    <body class="scheme-light" style="display: none">
        <div class="overlay">
            <div class="description modal">
                <h1>About Zen</h1>
                <p>
                    Zen is clean and simple web text editor modified by <a href="http://xmq.plus/" target="_blank">肆零肆</a> Individual.
                    <br />It's 100% private and stores all the data only locally in your browser.
                    <br /><br />
                    <a href="https://xmq.plus" target="_blank">Blog</a>
                     | <a href="https://github.com/Sumsung524" target="_blank">Github</a>
                     | <a href="mailto:me@xmq.plus">Email</a>
                    <br /><br />
                    Support Zen:
                    <br /><a href="https://forms.gle/bFebcfkb7D4qwcY9A" target="_blank">Help improve Zen</a>
                    <br /><a href="https://www.producthunt.com/posts/zen-by-unit" target="_blank">Vote on Product Hunt</a>
                    <br /><br />
                    说明:
                    <br />本页面经过修改,嵌入博客网站,方便个人,随时记录
                    <br />沉浸式纯文本写作,支持Markdown预览
                    <br />写下的内容,会在下一次打开时与你邂逅
                    <br />具体操作查看快捷键
                    <br />写作全英文界面,说明有疑问自行翻译
                    <br />页面没有问题,可能只是你不会用
                    <br />东西很简单,希望你能喜欢
                    <br />如果你也想拥有一个属于自己的,Github有源码
                    <br />Nothing to type...over
                    <!-- <br /><a href="https://fonts.google.com/" target="_blank">Google Fonts</a> -->
                    <!-- <br /><a href="https://fontawesome.com/" target="_blank">Font Awesome icons</a> -->
                    <!-- <br /><a href="https://freesound.org/people/juskiddink/sounds/75105/" target="_blank">Manual typewriter sounds</a> -->
                    <!-- <br /><a href="http://www.showdownjs.com/" target="_blank">ShowdownJS</a> -->
                    <!-- <br /><a href="https://github.com/tholman" target="_blank">Tim Holman</a> for <a href="https://github.com/tholman/zenpen" target="_blank">Zenpen</a> -->
                    <!-- <br /><br />Copyright © <script>document.write(new Date().getFullYear())</script> Unit -->
                </p>
            </div>
            <div class="help-modal modal">
                <h1>Help</h1>
                <p>
                        <h2>Features</h2>
                        <table class="shortcuts-table">
                            <tr><td>Fullscreen</td><td><code>Ctrl/Cmd + Shift + F</code></td></tr>
                            <tr><td>Change font</td><td><code>Ctrl/Cmd + Shift + A</code></td></tr>
                            <tr><td>Change theme</td><td><code>Ctrl/Cmd + Shift + E</code></td></tr>
                            <tr><td>Typewriter sounds</td><td><code>Ctrl/Cmd + Shift + Y</code></td></tr>
                            <tr><td>Markdown mode</td><td><code>Ctrl/Cmd + Shift + M</code></td></tr>
                            <tr><td>Print</td><td><code>Ctrl/Cmd + Shift + P</code><br><code>Ctrl/Cmd + P</code></td></tr>
                            <tr><td>Download</td><td><code>Ctrl/Cmd + Shift + S</code><br><code>Ctrl/Cmd + S</code></td></tr>
                        </table>

                        <br /><h2>Markdown</h2>
                        <table class="shortcuts-table">
                            <tr><td>Bold</td><td><code>Ctrl/Cmd + B</code></td></tr>
                            <tr><td>Italic</td><td><code>Ctrl/Cmd + I</code></td></tr>
                            <tr><td>Insert link</td><td><code>Ctrl/Cmd + K</code></td></tr>
                            <tr><td>Code block</td><td><code>Ctrl/Cmd + Shift + C</code></td></tr>
                        </table>
                </p>
            </div>
        </div>

        <div class="ui">

            <div class="wrapper">
                <div class="top editing icons">
                    <button class="fullscreen" title="Toggle fullscreen"><i class="fa fa-expand-arrows-alt"></i></button>
                    <button class="font-flip" title="Change font"><i class="fa fa-font"></i></button>
                    <button class="color-flip" title="Change color scheme"><i class="fa fa-tint"></i></button>
                    <button class="sfx-mute" title="Typewriter sounds"><i class="fa fa-volume-off"></i></button>
                    <button class="markdown" title="Markdown"><i class="fab fa-markdown"></i></button>
                    <button class="print" title="Print"><i class="fas fa-print"></i></button>
                    <button class="download" title="Download text"><i class="fa fa-download"></i></button>
                    <!-- <button class="send" title="Send to Unit"><i class="fa fa-send"></i></button> -->
                </div>

                <div class="bottom icons">
                    <button class="Site" title="Site on 肆零肆" onclick="window.open('https://xmq.plus', '_blank')"><i class="fab fa-product-hunt"></i></button>
                    <button class="help" title="Help"><i class="fa fa-question"></i></button>
                    <button class="about" title="About"><i class="fa fa-info"></i></button>
                </div>
            </div>
        </div>

        <div class="statistic-container">
            <div class="wrapper">
                <div class="bottom statistic"></div>
            </div>
        </div>

        <section>
            <article
                contenteditable="true"
                class="content"
                data-placeholder="Type your text. When you return it will be still here."></article>
            <div class="markdown-showcase" style="display: none"></div>
        </section>

        <!-- JS -->
        <script src="js/fc47806bb4.js"></script>
        <script src="js/bundle.js"></script>
    </body>
</html>

只是把一些没用的内容或者信息进行删除或者修改,将路径对应到本地文件;

VScode F5调试一下,测试和原网页完全一致,表示都齐全了;

打包上传Github

使用说明手册Github_docs

登录Github,创建新仓库Sumsung524/Zen,不设置readme等文件。

使用Git bash定位到将本地网页文件夹Zen,连接Github中新建仓库并推送:

cd ~/desktop/zen/
git init
git remote add origin git@github.com:Sumsung524/zen.git
git add *
git commit -m "first submit"
git push -u origin master

嵌入Hexo博客

新建页面

hexo new page "zen"    

根目录下source/zen/index.md文件下编辑:

---
title: zen
date: 2022-03-29 13:32:13
type: "zen"
layout: "zen"
---

主题文件下layout/新建zen.ejs文件,复制Zen.html代码内容到文件中,并在最前方加入,阻止hexo主题渲染:

---
layout: false
---

html已经嵌入了,接下来放入其所需的js、css、音频、logo等文件

为了保证后期区分zen文件,在原有的js、css、音频文件上修改名称,加入前缀Zen_css

文件都存放在主题目录下source/css、source/js、source/sfx、source/images/Zen_logo(新建)

因为文件路径发生变化,在zen.ejs文件中修改移动路径,确保文件与路径一一对应。

具体路径修改如下:

CSS

style.css改zen_style.css,zencss.css改zen_css.css,保证格式统一,防止重复文件名称:

        <!-- CSS -->
        <link href="/css/zencss.css" rel="stylesheet">
        <link href="/css/zenstyle.css" rel="stylesheet" media="all">

images/Zen_logo

        <!-- Icon -->
        <link rel="apple-touch-icon" sizes="180x180" href="/images/Zen_logo/apple-touch-icon.png">
        <link rel="icon" type="image/png" sizes="32x32" href="/images/Zen_logo/favicon-32x32.png">
        <link rel="icon" type="image/png" sizes="16x16" href="/images/Zen_logo/favicon-16x16.png">
        <link rel="manifest" href="/images/Zen_logo/site.webmanifest">
        <link rel="mask-icon" href="/images/Zen_logo/safari-pinned-tab.svg" color="#5bbad5">

JS

对应文件同样改名

        <script src="/js/zen_fc47806bb4.js"></script>
        <script src="/js/zen_bundle.js"></script>

js、logo、css都移入了,最后将音频文件的sfx文件夹移入source/文件下,路径没有发生改变,所以不需要改。

如果为了辨别sfx文件夹是属于zen页面,想命名sfx文件夹为zen_sfx,则需要在zen_bundle.js文件中查找sfx/文件夹关内容,全部替换为/zen_sfx(只需要替换6个,最后一个sfx.mute不替换)

到这里挂本地服务器测试一下

hexo s 进入页面如果功能都正常使用,则测试成功。

选项栏添加Zen按钮

页面嵌入成功后,需要设置一个进入按钮,决定在首页顶栏、和导航页右上角添加,方便自己随时能够进行记录。

首页栏添加按钮

主题目录下_config.yml文件下menu下添加:

  Zen:
    url: /zen
    icon: fas fa-solid fa-keyboard

导航页添加按钮

在右侧栏windows软件下面添加

nav.ejs添加

      <!--关于页面-->
      <% if (theme.navabout) { %>
      <li class="submit-tag">
        <a href="<%= url_for(theme.navabout.url1) %>">
          <i class="<%= theme.navabout.icon1 %>"></i>
          <span class="tooltip-blue"><%= theme.navabout.name1 %></span>
        </a>
        <a href="<%= url_for(theme.navabout.url2) %>">
          <i class="<%= theme.navabout.icon2 %>"></i>
          <span class="tooltip-blue"><%= theme.navabout.name2 %></span>
        </a>
        <a href="<%= url_for(theme.navabout.url3) %>">
          <i class="<%= theme.navabout.icon3 %>"></i>
          <span class="tooltip-blue"><%= theme.navabout.name3 %></span>
        </a>
      </li>
      <% } %>

主题目录下_config.yml文件下navabout下添加:

navabout:
  url1: /windows/
  icon1: fab fa-windows
  name1: Windows软件
  url2: /zen
  icon2: fas fa-solid fa-keyboard
  name2: Zen
  name3: 关于
  icon3: fas fa-info-circle
  url3: /aboutnav

评论
 上一篇
Obsidian笔记实现Windows与Android端同步 Obsidian笔记实现Windows与Android端同步
之前写作工具:Typora+Notion,后面将写作工具全部转移至obsidian。 想借助转移到obsidian的这一个事情,记录实现同一笔记修改后能够分发到各个平台设备、网盘、服务器的详细过程。 转移原因主要原因 同步问题 Typor
2022-03-30
下一篇 
Gitee图床转移记录 Gitee图床转移记录
2022年3月25日 gitee图床仓库被封,图片失效,进行图床转移。 计划把Gitee仓库的图片转移到千牛云,并把图床链接绑定自己网站域名。 第一次转移过程中使用的是主域名(xmq.plus)对图床进行绑定,因主域名(xmq.plus)已
2022-03-28
  目录