前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Butterfly布局调整———相关推荐版块侧栏卡片化

Butterfly布局调整———相关推荐版块侧栏卡片化

作者头像
Akilar
发布2021-12-16 08:16:39
9510
发布2021-12-16 08:16:39
举报
文章被收录于专栏:Akilarの糖果屋Akilarの糖果屋

更新记录

2021-12-15:正式版v1.0

  1. 重写related_posts.js文件,沿用最新文章的布局
  2. 调整与相关教程的联动内容

思路解析

之前一直没有留意到,butterfly的原生相关推荐版块和其他布局比起来实在是太突兀了(主要是没有圆角),就那么突然的出现在文章和评论区之间,包括我和@贰猹都觉得有必要改动这个(不过贰猹是不要侧栏党),@洪哥的倒是和整个文本融合的不错(是配色效果吗?)。出于我守财的习惯,我通常不会直接删除主题已有的一些功能,那么要怎么处理这个那么大一块的推荐版块呢? 我的做法就是,把它丢到可以自由控制显隐的侧栏里。还能顺便沿用我之前写的SAO UI和手机端侧栏fixed卡片样式。

说干就干,首先,要定位这个侧栏卡片的源码位置,用F12确定了它的class为relatedPosts,然后在主题源码里全局搜索,发现这个居然不是在pug中生成,而是通过一个hexo的helper函数来处理的,也就是butterfly\scripts\helpers\related_post.js,好在写插件的时候已经充分接触过这种情况。 第一步,先在F12里复制整个最新文章侧栏卡片的html源码,然后对这部分源码进行美化处理,得到骨架。

代码语言:javascript
复制
<div class="card-widget card-recent-post">

<div class="item-headline"><i class="fas fa-history"></i><span>最新文章</span>
</div>

<div class="aside-list">

  <div class="aside-list-item">

    <a class="thumbnail" href="/posts/451ac5f8/" title="Butterfly fixed card widget">
      <img src="https://cdn.jsdelivr.net/npm/akilar-candyassets/image/cover1.webp" alt="cover" >
    </a>
    <div class="content">
      <a class="title" href="/posts/451ac5f8/" title="Butterfly fixed card widget">Butterfly fixed card widget</a>
      <time datetime="2021-12-09T02:03:59.000Z" title="发表于 2021-12-09 10:03:59">2021-12-09</time>
    </div>
  </div>

</div></div>

到这一步,基本可以发现推荐版块和最新文章版块的要素变量其实差不多,因此可以很轻易的搬过来,这里我还可以直接沿用一部分class名,这样就能继承已有的css样式,省的我费力写UI了。 然后就是找到related_posts.js中关于html代码构建的部分,按照上面分析出的骨架和现有的变量进行拼装就OK了。

魔改步骤

预览效果

1.修改 [Blogroot]\themes\butterfly\scripts\helpers\related_post.js, 从大概 47 行开始到 70 行的部分。

  • diff 代码块
  • 改动完成的代码块

2.因为原本的版块是在文章下方,而现在我们需要把它改到侧栏。所以需要修改[Blogroot]\themes\butterfly\layout\post.pug大约 26 行的位置先移除在文章底部的推荐版块。

代码语言:javascript
复制
  if theme.post_pagination
    include includes/pagination.pug
- if theme.related_post && theme.related_post.enable
-   != related_posts(page,site.posts)

  if page.comments !== false && theme.comments && theme.comments.use

3.然后修改[Blogroot]\themes\butterfly\layout\includes\widget\index.pug, 这个文件每个版本都长得不太一样,这里仅供参考。因为感觉文章也最新文章和推荐文章同时存在,最新文章就显得有点多余了,所以我把最新文章的侧栏卡片注释了。

代码语言:javascript
复制
#aside-content.aside-content
  //- post
  if is_post()
    if showToc && theme.toc.style_simple
      .sticky_layout
        include ./card_post_toc.pug
    else
      !=partial('includes/custom/SAO_card_player', {}, {cache:theme.fragment_cache})
      !=partial('includes/widget/card_announcement', {}, {cache:theme.fragment_cache})
      !=partial('includes/widget/card_top_self', {}, {cache:theme.fragment_cache})  
      .sticky_layout
        if showToc
          include ./card_post_toc.pug
+       if theme.related_post && theme.related_post.enable
+         != related_posts(page,site.posts)
-       - !=partial('includes/widget/card_recent_post', {}, {cache:theme.fragment_cache})
+       //- !=partial('includes/widget/card_recent_post', {}, {cache:theme.fragment_cache})
        !=partial('includes/widget/card_ad', {}, {cache:theme.fragment_cache})

4.那么如果你还有用到我写的fixed 侧栏卡片样式的话,记得也去改下那边的配置项,修改[Blogroot]\_config.butterfly.yml

代码语言:javascript
复制
  #侧栏悬浮卡片控制按钮
  #https://akilar.top/posts/451ac5f8/
  fixed_card_widget:
    enable: true
    page:  #页面显示按钮
      - type: class #侧栏卡片选择器类型
        name: card-info #侧栏卡片选择器名称
        index: 0 #侧栏卡片选择器序列
        icon: fas fa-address-book #图标
        title: 用户信息 #悬停显示提示
      - type: class
        name: card-clock
        index: 0
        icon: fas fa-cloud-sun
        title: 电子钟
      - type: class
        name: card-shuo
        index: 0
        icon: fas fa-comments
        title: 碎碎念
      - type: class
        name: card-recent-post
        index: 0
        icon: fas fa-history
        title: 最新文章
      - type: id
        name: card-newest-comments
        index: 0
        icon: fas fa-comment-dots
        title: 最新评论
      - type: class
        name: card-tags
        index: 0
        icon: fas fa-tags
        title: 标签
      - type: class
        name: card-webinfo
        index: 0
        icon: fas fa-chart-line
        title: 网站咨询
    post: #文章页显示按钮
      - type: class
        name: card-info
        index: 0
        icon: fas fa-address-book
        title: 用户信息
      - type: class
        name: card-clock
        index: 0
        icon: fas fa-cloud-sun
        title: 电子钟
      - type: class
-       name: card-recent-post
+       name: card-recommend-post
        index: 0
-       icon: fas fa-history
+       icon: fas fa-dharmachakra
-       title: 最新文章
+       title: 相关推荐

5.改动完成后运行 hexo clean,hexo generate,hexo server 三件套就能看到完成效果了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-12-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 思路解析
  • 魔改步骤
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档