2020年2月11日に投稿

【自作ブログ】Contentfulで記事を作成しよう

どうも。連載の第3回目です。私も記事を書くことに少し慣れてきました。
今回はContentful側の設定について進めていきます。
下準備が続いてしまいますが、がんばっていきましょう。

Contentfulに記事用のModelを作成する

それでは早速Contentfulに記事を投稿できるようにしていきます。

Contentfulにログインする

ContentfulにはGitHubのアカウントがあれば簡単にログインできます。
また画像だらけの記事になってしまうのもアレなのでここでは省略させていただきますが、トップページから右上の「Log in」ボタンをクリックするとGitHubでログインできる画面になるので、そこからログインしてください。

ブログサイト用のSpaceを作成する

ログインが完了すると「The example project」というSpaceが自動的に作成されていると思います。
ところでSpaceとはなんでしょうか?
公式の説明には以下のように記載されています。

From the simplest perspective spaces house content types, entries, and assets. Practically speaking, however, it is more useful to think of a space as serving a particular purpose. It is not only a collection of content, it’s a collection of content with a certain goal. A space might contain content for a new marketing campaign, for a homepage, for a PIM system, or for anything else.

引用元:What are spaces and organizations?

要約すると、「ある目的を持った複数のコンテンツを管理する空間」といったところでしょうか。
今回の目的はブログの記事を作成することなのでコンテンツとしては「記事」が必要です。
さらには一般的なブログサイトに倣って「カテゴリー」と「タグ」を記事ごとに設定できるようにするので、

  • 目的
    • ブログの記事投稿
  • 必要なコンテンツ
    • 記事
    • カテゴリー
    • タグ

ということになり、これらのコンテンツを管理するSpaceを作成することが目的です。

では、ブログ投稿用のSpaceを作成していきましょう。
ホームページの左上の「The example project」と書かれたロゴをクリックするとメニューが表示されます。
メニュー内の「+ Create space」をクリックします。
create_new_space


次にSpace typeを選択します。無料で使うため一番上の項目を選択します。
choose_the_space_type


続いてSpace名を入力します。任意の名前を入れて「Proceed to confirmation」をクリックします。
あとは入力内容に間違いが無いか確認して「Confirm and create space」をクリックします。
choose_space_name


これでSpaceの作成は完了です。次はいよいよ「記事」用のContent modelを作成していきます。

Content modelを作成する

Content modelは「記事」、「カテゴリー」、「タグ」といったものがどのような要素で構成されているかを定義した物です。
まさにModelその物です。

では早速作っていきましょう。
まず画面上部の「Content model」をクリックして作成画面を表示して、「Add content type」ボタンをクリックします。
Content typeの入力画面が表示されるので以下のように入力します。
create_new_content_type


Content typeの作成が完了すると空のContent modelが作成されるので、右側の「Add field」ボタンをクリックして必要なfieldを追加していきます。
「記事」に必要な項目として、今回は以下のものを追加します。(カテゴリー、タグはあとで追加します)

Name description
title 記事のタイトル
header-image 記事のサムネに使う画像
body 記事の本文
slug 記事のURL(slug)
published-at 公開日
*category カテゴリー(あとで追加)
*tags タグ(あとで追加)

これらはContentfulのSDKを使ってNuxt側で取得する際の項目になります。
それでは一つずつ追加していきましょう。

title

field typeは「Text」を選択します。
field_type

Nameに「title」と入力して「Create and configure」ボタンをクリックします。
fillin_title_field

Field optionsの「This field represents the Entry title」にチェックを入れて「Save」ボタンをクリックします。
field_options

これでtitleフィールドの追加が完了しました。
以下、同じように他のフィールドも追加していきましょう。

header-image

項目 設定値
Field type Media
Name header-image
Field ID headerImage

body

記事本文になるのでName/Field ID入力時に「Long text, full-text search」を選択してください。

項目 設定値
Field type Text(Long text, full-text search)
Name body
Field ID body
Validations Required fieldにチェック

slug

項目 設定値
Field type Text(Short text, exact search)
Name slug
Field ID slug
Validations Required field、Unique fieldにチェック
Appearance Slug

published-at

項目 設定値
Field type Date and time
Name published-at
Field ID publishedAt

カテゴリーとタグは後の回で追加していきますので、一旦フィールドの登録はこれで完了です。
以下のようなModelが出来上がりました。最後に右側の「Save」をクリックするのを忘れずに。
summery

テスト用の記事を作る

次回からいよいよブログサイトのコーディングをしていくので、その時の表示用の記事を用意しておきます。
Contentfulの上部メニューの「Content」を選択して「Add Blog Post」をクリックします。
add_blog_post

記事作成画面が表示されますので適当に内容を入れて、最後に右側の「Publish」ボタンをクリックします。
※画像はいらすとやさんからお借りしました。
create_new_article

これで記事作成は完了です。お疲れ様でした。

終わりに

今回はContentfulの説明に終始してしまいましたが、次回からはいよいよContentfulに投稿した記事をNuxtで表示するまでをやっていきたいと思います。
なお、今回はテスト用の記事を1つしか用意していないので、記事を表示する際に1つだけしか出てこなくて少し寂しいものになってしまいます。
時間のある方は、できれば10件ほどテスト記事を用意しておくとテスト時にわかりやすくなると思うので登録しておいてください。
最後に、ブログ更新の告知をしていますのでTwitterのフォローもお願いします!
それではまた次回。