lyanna v2.0以来的重要更新

原文转载自 「小明明s à domicile」 (http://www.dongwm.com/post/lyanna-v27/)

预计阅读时间 0 分钟(共 0 个字, 0 张图片, 0 个链接)

从 lyanna 2.0 版之后还没有具体介绍过这个博客应用发生了那些改变,本篇文章介绍到目前 v2.7 里面做的重要改变以及 v3.0 的展望。

专题

在博客应用中常见的聚合页面包含「归档」、「分类」和「标签」,但我一直认为缺点什么,其实从很早前就想尝试实现「专题」这个效果。这是因为我比较喜欢写系列文章,而且我觉得很多文章可以按某种条件归到一起,但是并不是得按照现有的条件排序:如按发布时间升序或者降序。我希望有一种聚合页面可以方便的按照运营者自己的观点去调整文章列表的顺序。

在电商、社交网站,「专题」是一种常见的页面形式。各家各产品的表现形式差别也比较大,但是我们还是可以借鉴其中的 3 个思路:

  1. 专题是一个或者多个文章的聚合页面
  2. 专题和文章一样,也有一个列表
  3. 专题管理后台主要作用除了设置专题介绍等信息,对应文章由运营者从现有文章列表选取

通过一个动态图看看效果:

目前我没把专题做的很重。再感受下后台:

分了已选 / 备选 2 个数据池,可以方便在 2 个池之间拖拽、选择和删除。有一个重要的小贴士,如果你的文章列表很长,例如我博客目前有 160 + 篇文章,从备选列表下面拖拽文章到已选池非常麻烦,所以在这里可以直接点对应文章即可。

Widget

在 V2.7 时添加了 Widget (小部件),这个功能思路来源于 Wordpress,最终目的是可以在博客的 (左 / 右 / 上 / 下) 边栏中添加、排列或删除这些部件。不过目前只支持右侧边栏,感受一下:

现在内置了 aboutme、blogroll、most_viewed、latest_comments、tagcloud、html 等 widget,其实是其中的 html 插件,它给予了极大的自由度,可以方便自定义设置边栏的内容,发挥想象力吧。

需要重点说的有 2 点:

<ul class="tagcloud list-inline">                                                                                
    <%                                                                                                             
      per_page = 4  # 主要调整点1                                                                                               
      sorted_tags = sorted(tags, key=lambda x: x[1], reverse=True)                                                 
      max_ = len(sorted_tags[0]) / per_page                                                                        
      min_ = len(sorted_tags[-1]) / per_page                                                                       
    %>                                                                                                             
    % for tag, count in tags:                                                                                      
    <% size = max(math.log(count / per_page) - min_, 1) / ((math.log(max_) - math.log(min_)) or 1) * 4 + 5 %>      # 主要调整点2  
      <li><a target="_blank" href="${ tag.url }" style="font-size: ${ size }pt;">${ tag.name }</a></li>            
    % endfor                                                                                                       
  </ul>

最后欢迎大家提 PR 添加更多的 widget。

kubernetes/Docker Compose 支持

这个还是以学习和本地开发为主,现在已经有线上 kubernetes 版本的博客效果:https://blog.dongwm.com

这 2 个应用在不同区域 (一个北京一个上海) 的 2 个服务器上,数据是不同步的。原因其实不复杂:我目前用的博客服务器是最低配 (1 核 CPU+1G 内存),按 kubernetes 官网说明不符合配置要求,所以在另外一个刚能达到要求的服务器上跑 kubernetes。不过大家手动访问过可以感受到: kubernetes 版本的要慢很多。展望一下,等我不差钱了,买个物理机再把博客迁到 kubernetes 上吧😝

Github Cards

支持在文章中引用 Github User/Repo Card,代码源于 Github Cards ,我对样式做了微调。我的博客的「 关于本站 」这篇文章中有体现:

盘古之白

「盘古之白」简单地说就是对文章内容中的中英文之间自动加空格。这是一个比较强迫症的体验,我其实对这部分没那么大的阅读不适,但是有几个订阅博客内容的朋友都提到过,我想了想对于技术性博客代码、中文、英文混杂加上盘古之白也是有必要的。

具体实现可以翻我写的代码了,除了标题和代码以外的内容都会自动加空格。

重构了 Profile 部分

博客原来决定是否显示右边栏是通过一个叫做SHOW_PROFILE的变量决定的,在它的背后是一个 Profile 的模型,不过这个模型狠鸡肋,虽然是用 atts 包装了一下,但说白了就是写了个本地 JSON 文件。我一直对 Profile 很不满意,觉得它和「User」有冲突。但是当时没想通要怎么实现,这次接着 aboutme 这个 widget 的实现重构了它。

重构内容如下:

感受一下:

可以看到更新当前登录管理员 (User) 头像是会改变。另外文章页面可以展示用户信息 (通过SHOW_AUTHOR = True)

展望

在 Python 2.7 的「退休」倒计时结束前,lyanna 也会迎来 v3.0。下面是我想到的一些变化:

后记

其他就是一些小修改了,就不一一提到了。欢迎大家使用 lyanna

more_vert