摘要:原文地址使用搭建靜態(tài)博客關(guān)鍵文件本文將會(huì)介紹如何為初始項(xiàng)目添加分頁功能。不過由于本來就打算重寫樣式,這一塊可以放心刪掉處理完這個(gè)問題你的新博客就實(shí)現(xiàn)分頁功能了下一步是樣式的相關(guān)調(diào)整,留到下一篇繼續(xù)講
原文地址:https://ssshooter.com/2018-12...
使用 Gatsby.js 搭建靜態(tài)博客 1 關(guān)鍵文件 <-
本文將會(huì)介紹如何為初始項(xiàng)目添加分頁功能。
理解頁面創(chuàng)建原理上一篇的 gatsby-node.js 介紹部分已經(jīng)說明了頁面生成的方法。
未修改前,首頁 index.js 存在于 pages 文件夾,不需要在 gatsby-node.js 使用 createPage 函數(shù)生成,因?yàn)?createPage 多用于遍歷數(shù)據(jù)批量生成頁面。
而我們現(xiàn)在的需求就正好需要用到!文章的分頁需要把文章列表分割為每頁 N 篇文章的,M 個(gè)頁面,因此需要使用 createPage。
添加分頁模板首先在 templates 文件夾創(chuàng)建 index.js(或者 blog.js,你喜歡)。
文件內(nèi)容大部分都跟現(xiàn)有的 index.js 一樣,但是有以下改動(dòng):
添加翻頁按鈕// 數(shù)據(jù)來源是 createPage 注入的上下文變量 const { totalPage, currentPage } = this.props.pageContext ······在查詢中添加分頁邏輯{currentPage - 1 > 0 && ( ← 上一頁 )}{currentPage + 1 <= totalPage && ( 下一頁 → )}
// $skip 和 $limit 的來源也是 context // 不過可以注意到在查詢中這些變量就存在于最外層而不需要訪問對(duì)象屬性獲取 export const pageQuery = graphql` query($skip: Int!, $limit: Int!) { site { siteMetadata { title description } } allMarkdownRemark( sort: { fields: [frontmatter___date], order: DESC } limit: $limit skip: $skip ) { edges { node { excerpt fields { slug } frontmatter { date(formatString: "MMMM DD, YYYY") title } } } } } `在 gatsby-node.js 修改生成函數(shù)
這里是批量生成分頁頁面的邏輯,根據(jù)每頁文章數(shù) postsPerPage 計(jì)算生成頁面總數(shù),然后向每頁注入四個(gè)變量,包括:
當(dāng)前頁數(shù)
總頁數(shù)
每次獲取數(shù)據(jù)的數(shù)量
跳過前面數(shù)據(jù)的數(shù)量
模板頁面有了這些參數(shù)便可以方便查詢出該頁面需要渲染什么文章。
// create homepage pagination const postsPerPage = 8 const numPages = Math.ceil(posts.length / postsPerPage) Array.from({ length: numPages }).forEach((_, i) => { createPage({ path: i === 0 ? `/blog` : `/blog/${i + 1}`, component: homePaginate, context: { currentPage: i+1, totalPage:numPages, limit: postsPerPage, skip: i * postsPerPage, }, }) })無關(guān)主題的突發(fā)情況
功能實(shí)現(xiàn)了,但是這里有一個(gè)突發(fā)事件:
原來的頁面是這樣的:
我什么都沒修改怎么就變成這樣了?
注釋了
layout 組件里面寫法是在根目錄的時(shí)候把 title 放大,但是添加分頁之后,主頁路由從根目錄 / 變?yōu)?/blog,于是產(chǎn)生了這個(gè)詭異的問題。
不過由于本來就打算重寫樣式,這一塊可以放心刪掉!
Next處理完這個(gè)問題你的新博客就實(shí)現(xiàn)分頁功能了!下一步是樣式的相關(guān)調(diào)整,留到下一篇繼續(xù)講
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/99910.html
摘要:所以自己定值博客,或許可以讓自己堅(jiān)持更新下去。配合上語雀的文章發(fā)布推送絕配,于是有了這么個(gè)功能專題。 可以前往我的博客閱讀:https://ssshooter.com/2019-02... 0 前言 本文并不是從 0 開始使用 gatsby.js 搭建博客,starter 使用的是 gatsby-starter-blog。使用 gatsby-starter-blog 可以大量節(jié)省項(xiàng)目搭...
摘要:原文地址靜態(tài)博客之前也有搭建過,不過使用一鍵生成的,其實(shí)當(dāng)時(shí)也有考慮過,不過這個(gè)框架搭建博客入門還是比較難的,前置知識(shí)點(diǎn)包括和。使用建立項(xiàng)目已經(jīng)自帶了不少插件,但在我的搭建過程中仍然有一些需要自己添加的。 原文地址:https://ssshooter.com/2018-12... 靜態(tài)博客之前也有搭建過,不過使用 Hexo 一鍵生成的,其實(shí)當(dāng)時(shí)也有考慮過 Gatsby,不過這個(gè)框架搭...
摘要:原文鏈接回顧使用搭建靜態(tài)博客樣式調(diào)整官方自帶標(biāo)簽系統(tǒng)教程,英語過關(guān)可以直接閱讀官方教程。制作頁面展示所有標(biāo)簽重點(diǎn)同樣是查詢部分是標(biāo)簽名,是包含該標(biāo)簽的文章總數(shù)。在之前寫好的文章頁渲染標(biāo)簽就是查詢的時(shí)候多一個(gè)標(biāo)簽字段,然后渲染上,完事。 原文鏈接:https://ssshooter.com/2018-12... 回顧:使用 Gatsby.js 搭建靜態(tài)博客 3 樣式調(diào)整 官方自帶標(biāo)簽系統(tǒng)...
摘要:成功添加樣式當(dāng)然,除了,還有其他樣式如等,還有其他可以看官網(wǎng)右側(cè)的選項(xiàng)。不過比較麻煩的是覆蓋樣式需重啟服務(wù)才能生效不能嵌套選擇器這是一個(gè) 原文鏈接:https://ssshooter.com/2018-12... 回顧:使用 Gatsby.js 搭建靜態(tài)博客 2 實(shí)現(xiàn)分頁 修復(fù)代碼高亮 為了測(cè)試樣式,隨便找一個(gè)以前的 .md 文件粘貼到 blog 項(xiàng)目中渲染看看效果: showImg(...
摘要:原文鏈接偶然看到通過語雀發(fā)布文章到靜態(tài)博客,很方便,實(shí)現(xiàn)過程也很有意思。我的配置接收推送此時(shí)在語雀發(fā)布文章,接口就會(huì)收到推送的文章信息。 原文鏈接:https://ssshooter.com/2019-01... 偶然看到通過語雀 webhook 發(fā)布文章到 Hexo 靜態(tài)博客,很方便,實(shí)現(xiàn)過程也很有意思。同樣的原理可以運(yùn)用到 Gatsby.js 博客上。 因?yàn)槭褂昧?netlify,...
閱讀 2171·2021-10-08 10:15
閱讀 1201·2019-08-30 15:52
閱讀 525·2019-08-30 12:54
閱讀 1547·2019-08-29 15:10
閱讀 2698·2019-08-29 12:44
閱讀 3020·2019-08-29 12:28
閱讀 3371·2019-08-27 10:57
閱讀 2227·2019-08-26 12:24