💻

gatsby-blogに公開フラグを追加する
April 03, 2021April 17, 2023
#Develop#Nodejs#Gatsby#ブログ制作

記事の作成中に公開されないようにしたり、公開タイミングを選べるようにするため gatsby-blog に公開フラグを追加した。

要件

  • 記事の Front-matter で公開設定する
  • 非公開記事があっても URL は変わらない
  • console に記事の公開情報を出力する。

実装

gatsby-node.js
front-matter に published を追加し記事から読み取れるようにした。
createPage 処理の前に published の値をチェックして false の場合は実行しないようにした。
フィルターの前で console.log を出力した。
フィルターで処理すると記事の slug が変わってしますので注意

  // Get all markdown blog posts sorted by date
  const result = await graphql(
    `
      {
        allMarkdownRemark(
          sort: { fields: [frontmatter___date], order: ASC }
          limit: 1000
        ) {
          nodes {
            id
            frontmatter {
              title
              description
              published
            }
            fields {
              slug
            }
          }
        }
      }
    `
  )

〜〜〜略〜〜〜

  if (posts.length > 0 ) {
    posts.forEach((post, index) => {
      console.log(post.frontmatter.title + " : "  + post.frontmatter.published)
      if(post.frontmatter.published != false){
        const previousPostId = index === 0 ? null : posts[index - 1].id
        const nextPostId = index === posts.length - 1 ? null : posts[index + 1].id
        createPage({
          path: post.fields.slug,
          component: blogPost,
          context: {
            id: post.id,
            previousPostId,
            nextPostId,
          },
        })
      }
    })
  }

〜〜〜略〜〜〜

createTypes(`
    type Frontmatter {
      title: String
      description: String
      date: Date @dateformat
      published: Boolean
    }
`)

index.js
posts に記事情報を代入するときにフィルターをかけて published が false の記事を消す

const posts = data.allMarkdownRemark.nodes.filter(post => post.frontmatter.published != false)

〜〜〜略〜〜〜

export const pageQuery = graphql`
  query {
    site {
      siteMetadata {
        title
      }
    }
    allMarkdownRemark(sort: { fields: [frontmatter___date], order: DESC }) {
      nodes {
        excerpt
        fields {
          slug
        }
        frontmatter {
          date(formatString: "MMMM DD, YYYY")
          title
          description
          published
        }
      }
    }
  }
`

まとめ

記事ごとに設定できて便利
フラグが設定されていない場合は null が入るので表示される
GithubActions のログに公開情報がリストで確認できる
おしまい



SSL Labsで満点を取る
March 31, 2021February 19, 2024

SSL Labs で A+を取り、全ての項目を満点にした CentOS8 初期状態 初期状態は B でした デフォルトで TLS1.3+TLS1.2 のみでした certificate と Protocolsupport は満点 他は足りないところがあるので埋めていきます。 Key Exchange DHkey…

Continue reading...
sakakinox

Written by sakakinox
Server enginier

Copyright © sakakinox.net 2021-2024.