Butterfly主题魔改教程,添加留言板。


我的博客主题版本为:hexo5.4、Butterfly3.6.2

如果与我的版本不一样可能会有略微差别,届时请自行百度。

本文参考文章:Akilarの糖果屋的《信笺样式留言板》

1.说明

此篇文章为了记录博客魔改过程,方便找到回家的路。参考Akilarの糖果屋的《信笺样式留言板》

教程,为了方便以后的升级与自定义,本文只记录插件化魔改和旧版markdown魔改方案,减少像源码魔改方案的侵入性。

2.npm插件魔改(推荐)

  1. [Blogroot] 运行指令

    npm install hexo-butterfly-envelope --save
  2. 在站点配置文件或者主题配置文件添加配置项(对,两者任一均可。但不要都写)

    # envelope_comment
    # see https://akilar.top/posts/58900a8/
    envelope_comment:
    enable: true #开关
    cover: https://ae01.alicdn.com/kf/U5bb04af32be544c4b41206d9a42fcacfd.jpg #信笺封面图
    message: #信笺内容,支持多行
    - 有什么想问的?
    - 有什么想说的?
    - 有什么想吐槽的?
    - 哪怕是有什么想吃的,都可以告诉我哦~
    bottom: 自动书记人偶竭诚为您服务! #信笺结束语,只能单行
    height: #调整信笺划出高度,默认1050px
    path: #【可选】comments 的路径名称。默认为 comments,生成的页面为 comments/index.html
    front_matter: #【可选】comments页面的 front_matter 配置
    title: 留言板
    comments: true

3.旧版markdown魔改(不推荐)

此方案为旧版方案,代码结构较为混乱,且与 fancybox、medium_zoom 之间存在较多兼容性 bug,不推荐使用。

  1. 新建留言板页面(已有的不用重复操作。)
    [Blogroot] 打开终端,输入

    hexo new page comments
  2. 打开 [Blogroot]\source\comments\index.md
    将其内容修改为:

    ---
    title: 留言板
    top_img:
    ---

    <link rel="stylesheet" href="/css/commentsbar.css"/>
    <div id="computer">
    <div id="maincontent"><br>
    <div id="form-wrap"><img src="https://cdn.jsdelivr.net/gh/Akilarlxh/Valine-Admin@v1.0/source/img/before.png" id="beforeimg">
    <div id="envelope">
    <form>
    <div class="formmain">
    <img class="headerimg" src="https://ae01.alicdn.com/kf/U5bb04af32be544c4b41206d9a42fcacfd.jpg"/>
    <div style="padding: 5px 20px;">
    <center>
    <h3 calss="title3">来自Akilar的留言:</h3>
    </center>
    <center class="comments">
    有什么想问的?<br>
    有什么想说的?<br>
    有什么想吐槽的?<br>
    哪怕是有什么想吃的,都可以告诉我哦~<br>
    </center>
    <div class="bottomcontent">
    <img class="bottomimg" src="https://ae01.alicdn.com/kf/U0968ee80fd5c4f05a02bdda9709b041eE.png"/>
    </div>
    <p class="bottomhr">自动书记人偶竭诚为您服务!</p>
    </div>
    </div>
    </form>
    </div><img id="afterimg" src="https://cdn.jsdelivr.net/gh/Akilarlxh/Valine-Admin@v1.0/source/img/after.png">
    </div>
    </div>
    </div>
    <div id="mobile">
    <form>
    <div class="formmain"><img class="headerimg" src="https://ae01.alicdn.com/kf/U5bb04af32be544c4b41206d9a42fcacfd.jpg" />
    <div style="padding: 5px 20px;">
    <center>
    <h3 class="title3">来自Akilar的留言:</h3>
    </center>
    <center class="comments">
    有什么想问的?<br>
    有什么想说的?<br>
    有什么想吐槽的?<br>
    哪怕是有什么想吃的,都可以告诉我哦~<br>
    </center>
    <div class="bottomcontent"><img src="https://ae01.alicdn.com/kf/U0968ee80fd5c4f05a02bdda9709b041eE.png" class="bottomhr"></div>
    <p class="bottomhr"">自动书记人偶竭诚为您服务!</p>
    </div>
    </div>
    </form>
    </div>
  3. [Blogroot]\themes\butterfly\source\css\ 目录下新建 commentsbar.css

    /* 滚动条隐藏 */
    ::-webkit-scrollbar {
    display: none;
    }
    /* 禁用图片点击,butterfly渲染后会给图片套上fancybox,点开后会造成信笺偏移*/
    .formmain{
    pointer-events: none !important;
    }
    /* top-img隐藏 */
    #page-header {
    background: transparent !important;
    }
    /* 宽度小于530px隐藏信封 */
    @media screen and (max-width: 530px) {
    #computer {
    display: none !important;
    }
    }

    @media screen and (min-width: 530px) {
    #mobile {
    display: none !important;
    }
    }

    #article-container img {
    margin: 0 auto 0rem;
    }

    #form-wrap {
    overflow: hidden;
    height: 447px;
    position: relative;
    top: 0px;
    transition: all 1s ease-in-out .3s;
    z-index: 0;
    }
    /* 调整信封划出高度,换信笺内容以后可在此设置height */
    #form-wrap:hover {
    height: 1050px;
    top: -200px;
    }

    #beforeimg {
    position: absolute;
    bottom: 126px;
    left: 0px;
    background-repeat: no-repeat;
    width: 530px;
    height: 317px;
    z-index: -100;
    pointer-events: none;
    }

    #afterimg {
    position: absolute;
    bottom: -2px;
    left: 0;
    background-repeat: no-repeat;
    width: 530px;
    height: 259px;
    z-index: 100;
    pointer-events: none;
    }

    #envelope {
    position: relative;
    overflow: visible;
    width: 500px;
    margin: 0px auto;
    transition: all 1s ease-in-out .3s;
    padding-top: 200px;
    }

    #maincontent {
    width: 530px;
    margin: 20px auto 0;
    }

    .headerimg {
    width: 100%;
    overflow: hidden;
    pointer-events: none;
    }

    .formmain {
    background: white;
    width: 95%;
    max-width: 800px;
    margin: auto auto;
    border-radius: 5px;
    border: 1px solid;
    overflow: hidden;
    -webkit-box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.12);
    box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.18);
    }

    .title3 {
    text-decoration: none;
    color: rgb(246, 214, 175);
    }

    .comments {
    border-bottom: #ddd 1px solid;
    border-left: #ddd 1px solid;
    padding-bottom: 20px;
    background-color: #eee;
    margin: 15px 0px;
    padding-left: 20px;
    padding-right: 20px;
    border-top: #ddd 1px solid;
    border-right: #ddd 1px solid;
    padding-top: 20px;
    font-family: "Arial", "Microsoft YaHei", "黑体", "宋体", sans-serif;
    }

    .bottomcontent {
    text-align: center;
    margin-top: 40px;
    }

    .bottomimg {
    width: 100%;
    margin: 5px auto 5px auto;
    display: block;
    pointer-events: none;
    }

    .bottomhr {
    font-size: 12px;
    text-align: center;
    color: #999;
    }
    /* 夜间模式 */
    [data-theme='dark']
    .formmain {
    background: rgb(50, 50, 50);
    }
    [data-theme='dark']
    .comments {
    background: rgba(90, 90, 90, 0.8)
    }

    特点:

    1. 纯 CSS3 实现。理论上适用于任何主题。
    2. 可以自定义在页面中自定义头图,并修改 css 中的图片上升高度。
    3. 由于使用了盒子绝对定位。宽度过低时信封会疯狂错位,故写了两个样式。设置为低于一定宽度后自动隐藏信封。

如有错误,欢迎评论区留言!