文章主要参考这位大佬的博客:https://www.sunjianbo.com/gridea-auto-excerpt/

只做了一些小改动。

Gridea的部分主题并不带有自动摘要功能,如果需要摘要得先在文章中手动插入标记.否则首页就是光溜溜的一片标题,看起来很不舒服。
而且像我这样直接从CSDN迁移很多文章过来的也不可能挨篇文章去加标记,所以动手修改主题以达到首页自动显示摘要的目的。

本文以Gridea自带主题<Paper1.0.0>为例,讲述如何通过js代码修改添加自定义配置并完成自动摘要功能,修改方法大同小异,其他主题也可以参考。

1.增加自定义配置

编辑文件

%Gridea%\themes\paper\config.json,

%Gridea%就是Gridea设置中的站点源文件路径。
(注意,这里是指本地文件,而非服务器端的文件)
站点源文件路径在Gridea客户端左下角设置选项里查

在合适的位置(个人认为在末尾比较合适)上添加以下代码:

{

      "name": "is_auto_excerpt",

      "label": "是否启用自动摘要",

      "group": "自动摘要",

      "value": true,

      "type": "switch"

    },

    {

      "name": "auto_excerpt_line",

      "label": "自动摘要选取行数",

      "group": "自动摘要",

      "value": "3",

      "type": "input"

    }

如图

这样就完成了主题的页面设置功能,自动摘要选取的行数可以自定义

效果图:

2.在post-list模块中编写自动摘要功能

编辑文件

%Gridea%\themes\paper\templates\_blocks\post-list.ejs

在如图所示位置添加代码(缩进请参考图片,尽量保持一致):

      <% if (site.customConfig.is_auto_excerpt) { %>

        <!-- 如果开启了自动摘要,则根据配置筛除摘要内容 -->

        <% var br_position = 0 %>

        <% for (var br_count = 0; br_count < site.customConfig.auto_excerpt_line; br_count++) { %>

          <% br_position = post.content.indexOf('\n',br_position + 1) %>

          <% if(br_position < 0) { break } %>

        <% } %>

        <% if(br_position > 0) { %>

          <p><%- post.content.substring(0, br_position + 1) %>

            <% if(post.content.substring(0, br_position + 1).indexOf("<code") > 0) { %>

              <!-- 自动摘要出来的内容有<code则补上结尾,防止格式错误,顺便在前面补一个省略号表示内容不完整 -->

              ……  

              </code></pre>

            <% } else {%>

                <!-- 如果摘要不包含<code>,在摘要末尾添加省略号表示内容不完整 -->

                …

            <% } %>

          <p>

        <% } %>

      <% } %>

因为paper模板自带效果不错的more链接,我就没加任何判断了。直接用的它自带的那个。

3.保存重启Gridea预览查看效果