`
sunxboy
  • 浏览: 2877973 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

jekyll 中使用分页功能

 
阅读更多

对于大多数网站(尤其是博客),当文章越来越多的时候,就会有分页显示文章列表的需求。Jekyll 已经自建分页功能,你只需要根据约定放置文件即可。

分页功能只支持 HTML 文件

Jekyll 的分页功能不支持 Markdown 或 Textile 文件,而是只支持 HTML 文件。当然,这不会让你不爽。

开启分页功能

开启分页功能很简单,只需要在 _config.yml 里边加一行,并填写每页需要几行:

paginate: 5

下边是对需要带有分页页面的配置:

paginate_path: "blog/page:num"

blog/index.html 将会读取这个设置,把他传给每个分页页面,然后从第 2 页开始输出到 blog/page:num , :num 是页码。如果有 12 篇文章并且做如下配置 paginate: 5 , Jekyll 会将前 5 篇文章写入 blog/index.html,把接下来的 5 篇文章写入 blog/page2/index.html,最后 2 篇写入 blog/page3/index.html

与 paginator 相同的属性

属性描述

page

当前页码

per_page

每页文章数量

posts

当前页的文章列表

total_posts

总文章数

total_pages

总页数

previous_page

上一页页码 或 nil

previous_page_path

上一页路径 或 nil

next_page

下一页页码 或 nil

next_page_path

下一页路径 或 nil

不支持对“标签”和“类别”分页

分页功能仅仅遍历文章列表并计算出结果,并未读取 YAML 头信息,现在不支持对“标签”和“类别”分页。

生成带分页功能的文章

接下来要做的事情就是展现在页面上了,下边是一个简单的例子:

---
layout: default
title: My Blog
---

<!-- 遍历分页后的文章 -->
{% for post in paginator.posts %}
  <h1><a href="{{ post.url }}">{{ post.title }}</a></h1>
  <p class="author">
    <span class="date">{{ post.date }}</span>
  </p>
  <div class="content">
    {{ post.content }}
  </div>
{% endfor %}

<!-- 分页链接 -->
<div class="pagination">
  {% if paginator.previous_page %}
    <a href="/page{{ paginator.previous_page }}" class="previous">Previous</a>
  {% else %}
    <span class="previous">Previous</span>
  {% endif %}
  <span class="page_number ">Page: {{ paginator.page }} of {{ paginator.total_pages }}</span>
  {% if paginator.next_page %}
    <a href="/page{{ paginator.next_page }}" class="next">Next</a>
  {% else %}
    <span class="next ">Next</span>
  {% endif %}
</div>
注意首尾页

Jekyll 没有生成文件夹 ‘page1’ ,所以上边的代码有 bug ,下边的代码解决了这个问题。

下边的 HTML 片段是第一页,他除自己外,为每个页面生成了链接。

<div id="post-pagination" class="pagination">
  {% if paginator.previous_page %}
    <p class="previous">
      {% if paginator.previous_page == 1 %}
        <a href="/">Previous</a>
      {% else %}
        <a href="{{ paginator.previous_page_path }}">Previous</a>
      {% endif %}
    </p>
  {% else %}
    <p class="previous disabled">
      <span>Previous</span>
    </p>
  {% endif %}

  <ul class="pages">
    <li class="page">
      {% if paginator.page == 1 %}
        <span class="current-page">1</span>
      {% else %}
        <a href="/">1</a>
      {% endif %}
    </li>

    {% for count in (2..paginator.total_pages) %}
      <li class="page">
        {% if count == paginator.page %}
          <span class="current-page">{{ count }}</span>
        {% else %}
          <a href="/page{{ count }}">{{ count }}</a>
        {% endif %}
      </li>
    {% endfor %}
  </ul>

  {% if paginator.next_page %}
    <p class="next">
      <a href="{{ paginator.next_page_path }}">Next</a>
    </p>
  {% else %}
    <p class="next disabled">
      <span>Next</span>
    </p>
  {% endif %}

</div>
分享到:
评论

相关推荐

    jekyll-paginate:从Jekyll 3开始不再进行主动开发:Jekyll的分页生成器

    Jekyll ::分页 Jekyll的默认分页生成器。 安装 将此行添加到您的应用程序的Gemfile中: gem 'jekyll-paginate' 然后执行: $ bundle 或自己安装为: $ gem install jekyll-paginate 用法 一旦您的系统上安装了gem...

    jekyll-pagination:对Jekyll更好的分页

    `jekyll-pagination` 插件就是为了解决 Jekyll 的默认分页功能不足而设计的,提供了更强大和灵活的分页方案。 ### 1. Jekyll 的默认分页 Jekyll 内置的分页功能在 `_config.yml` 配置文件中开启,通过 `paginate` ...

    jekyll-paginate-v2:用于Jekyll 3的分页生成器(增强了对旧内置jekyll-paginate gem的替代):tent:

    分页宝石是专为Jekyll 3及更高版本制造的,完全向后兼容,并且可以替代以前内置的。 在上查看它。 在部分或通过电子邮件,您也可以与项目的。“彼此优秀” :red_heart:安装gem install jekyll-paginate-v2更新您的...

    用jekyll制作高大上的网站(二)——实际应用

    比如,你可以创建一个`_includes/head.html`文件来存放页头代码,然后在布局文件中使用`{% include head.html %}`将其引入。 对于网站的样式和脚本,你可以在`assets`目录下创建`css`和`js`子目录,将CSS样式表和...

    Ruby-AwesomeJekyll一组很棒的Jekyll工具插件主题指南

    例如,`jekyll-paginate`用于分页,`jekyll-sitemap`生成站点地图。 2. **Jekyll主题**: 主题是预先设计好的样式和布局,可快速改变站点外观。Awesome Jekyll会列举各种开源和商业主题,满足不同的设计需求。 3. **...

    jekyll-book-3.2.1.p1.pdf

    Jekyll的插件系统非常丰富,支持多种功能扩展,例如显示Jekyll版本信息、文章分页、生成网站地图和归档页面等。这些插件在很大程度上扩展了Jekyll的功能,使其更加灵活和强大。 Jekyll也支持数据文件的使用,用户...

    jekyll-paginate-plugin:Ruby文件

    title : jekyll,分页功能,附带分类分页! tags: ['jekyll','blog'] categories: ['网站','博客'] header: jekyll tagline: jekyll,分页功能,附带分类分页! date: 2016-11-02 19:20: ascription: study group: ...

    jekyll-blog:一些 jekyll 博客使用 udemy 教程

    例如,`jekyll-paginate`用于分页,`jekyll-sitemap`生成网站地图,`jekyll-seo-tag`优化SEO等。另外,你还可以选择Jekyll主题来自定义博客外观。 ### 10. JavaScript的应用 虽然Jekyll主要处理静态内容,但可以...

    生成静态页面并有分页效果

    接下来,分页效果是网页设计中常见的一种交互功能,特别是在处理大量数据时,如博客列表、商品展示等。实现分页有多种方法: 1. **客户端分页**:通过JavaScript在浏览器端处理,利用AJAX异步请求获取更多数据,...

    jekyll-paginate-v2-example

    要在 Jekyll 站点中使用 `jekyll-paginate-v2`,首先需要将其添加到你的 `_config.yml` 文件的 `gems` 部分: ```yaml gems: - jekyll-paginate-v2 ``` 然后,通过配置文件设定分页参数,例如: ```yaml ...

    jekyll_blog:使用jekyll的个人博客

    2. **使用Jekyll插件**: 有些插件允许在Jekyll生成过程中动态插入JavaScript,如`jekyll-assets`插件,它可以管理CSS、JS资源并进行压缩。 3. **GitHub Pages限制**: 若在GitHub Pages上托管,注意其不支持自定义...

    jekyll-Materialize:使用 Materialize css 框架的 Jekyll 模板

    例如,你可以使用 Jekyll 的 `jekyll-paginate` 插件实现分页,或者使用 `jekyll-seo-tag` 添加 SEO 优化。此外,Jekyll-Materialize 可能已经集成了 Google Analytics 或 Disqus 评论,这些都需要在 `_config.yml` ...

    vitrina:通用,可配置的Jekyll主题

    如果您只想在网站上使用此主题,则只需更改Jekyll项目主题。 如果您需要其他功能, scripts/的脚本可能会为您提供帮助。 该主题可能正是您需要的,也可能是您想避免的。 因此,如果您不想要使用JSON或学习此主题...

    jekyll-blog:Jekyll 博客课程与 Ajinkya

    对于标签"JavaScript",在Jekyll博客中,你可以使用JavaScript来增强动态功能。虽然Jekyll生成的是静态页面,但仍然可以在HTML文件中引入JavaScript库或脚本来实现交互效果。例如,你可以添加Google Analytics追踪...

    jekyll

    Jekyll特有的功能: 分页(默认值:每页5个帖子) 与Jekyll 3.x和GitHub Pages完全兼容 SEO优化 支持 评论支持 使用和带编号的代码行的语法荧光笔 其它功能: 封存页面 关于页面 标签功能和标签页面 链接帖子功能...

    harmonyos2-jekyll-theme-ey:简单且响应Swift的jekyll主题优化阅读和编码

    强迫症福利,主题内置了包括solarized-light和monokai等共25套代码高亮样式,默认是solarized-light,你可以在配置文件中快速切换,也可以很方便的加入自己想要的高亮样式 rss订阅采用更好的atom格式 使用标准的sitemap...

    jekyll3

    “非纯池”是博客的一个简单,美丽且功能强大的Jekyll主题。 它基于和构建。 普尔(Boole)解释说,吉基尔已经要求一种特定的化学品已有数天了,但是每次被他拿走时,他都拒绝说它不是纯正的化学品。...

    metalsmith-jekyll:类似于jekyll的静态博客生成器

    - 通过分页功能,可以自动将博客文章分组到不同的页面上,便于用户浏览和导航。 5. **RSS 支持**: - 集成了 RSS(Really Simple Syndication)订阅功能,使得用户可以通过 RSS 阅读器获取博客更新。 6. **标签...

    hydeout:用于Jekyll 3.x和4.x的Hyde的更新版本

    将gem "jekyll-theme-hydeout", "~&gt; 4.1"到您的Gemfile中,然后运行bundle install 。 如果要在Github页面上安装,则可能还必须将remote_theme: fongandrew/hydeout添加到_config.yml 。 Hydeout使用分页,因此,...

    jasper:Ghost 默认主题 Casper 的全功能 Jekyll 端口 :ghost:

    这是 Ghost 的默认主题 for Jekyll 的端口,灵感来自 。 此时您可能会问,为什么要制作一个新的 Casper 克隆? 尽管这是受到 Kasper 的启发,但还有一些附加功能使此端口更接近原始主题。 新功能:查看 ,Casper ...

Global site tag (gtag.js) - Google Analytics