【Contentful】カテゴリーモデルとブログ記事モデルの関連付け
  • 2019.10.09に公開
  • 2019.10.12に更新
  • ブログ構築
  • 6. カテゴリーページの構築
  • No.1 / 3
「ブログ構築」では、Nuxt.js v2.14未満が使用されています。 Nuxt.jsはv2.13~14で大きなバージョンアップがありました。それに伴い、書き方も大きく変化しています。 v2.14以上で書かれた「ブログ構築」の続編は、カテゴリー「 ブログ構築TS 」 で公開しています。

今回達成すること

今回は、Contentfulにカテゴリーモデルを作成して、blogPostモデルと関連づけるところまで行います。

カテゴリーモデルの完成イメージ

2019-10-09 15-41-36

全てContentful上での操作となります。

Contentfulにカテゴリーモデルを作成する

まずは、Contentfulにログインしてカテゴリーモデルを作成します。

ヘッダーメニューの「Content model」から、右の青いボタン「Add content type」をクリックしてください。

2019-10-09 14-35-08

そして

  • Name => 「category」
  • Api Identifier => 「category」

と入力して、「create」ボタンを押します。

2019-10-09 14-55-34

カテゴリーフィールドを作成する

次に、カテゴリーモデルのフィールドを作成します。

4つのフィールドを作成します。

フィールド名 説明 バリデーション
name カテゴリー名 Short text 必須
slug カテゴリーpath Short text 必須、ユニーク
sort 並び順 Integer 必須
difinition カテゴリーの説明 Short text 必須

右「Add field」ボタンから新規フィールドを作成しましょう。

nameフィールド

Add new field で「text」を選択し、以下のように入力します。

  • Name => name
  • FieldID => name
  • Short textにチェック

2019-10-09 15-21-51

完了したら「Create and configure」をクリックし詳細設定に進みましょう。

Settings
  • 「This field represents the Entry title」にチェックを入れてください。

    nameをフィールドの表示タイトルとします。

Validations
  • 「Required field」にチェックを入れてください。

    必須項目とします。

以上で「Save」ボタンで保存します。

slugフィールド

こちらも、nameと同じく「text」を選択し作成します。

  • Name => slug
  • FieldID => slug
  • Short textにチェック
Validations
  • 「Required field」にチェックします。
  • 「Unique field」にチェックします。

以上で保存します。

sortフィールド

続いて並び順です。「Number」を選択してください。

  • Name => sort
  • FieldID => sort
  • Integerにチェック
Validations
  • 「Required field」にチェックを入れます。

以上で保存します。

definitionフィールド

最後はカテゴリーの説明です。これは、metaデータのページタイトルとして扱います。

text」を選択してください。

  • Name => definition
  • FieldID => definition
  • Short textにチェック
Validations
  • 「Required field」にチェックを入れます。

Save」で保存しましょう。

完成したカテゴリーフィールド

最終的にこんな形になります。

2019-10-09 15-41-36

完成したら右上の「Save」ボタンで保存しましょう。

これでカテゴリーモデルを作成できました。

カテゴリーを作成する

モデルが作成できましたので、カテゴリーを作成しましょう。

今回は「RubyOnRails」「Nuxt.js」「コラム」の3つのカテゴリーを作成します。

カテゴリー名はご自身の好きな名前に変えて作成してください。

ヘッダーメニューの「Content」から、右の青いボタン「Add entry」=>「category」と進んでください。

カテゴリー作成の見本

RubyOnRailsはこのように作成しました。

definitionはページタイトルとして設定するため、クリックされやすいタイトルをつけるとSEOに有利です。

2019-10-09 16-18-14

右の「Publish」ボタンで保存します。

この調子で残り2つも作成してください。

カテゴリーとblogPostモデルと関連づける

さあ、カテゴリーとブログ記事の関連付けを行います。

まず、ヘッダーメニュー「Content model」から「blogPost」を選択してください。

Add field」から「Reference」を選択します。

2019-10-09 16-30-47

  • Name => category
  • Field ID => category
  • One referenceにチェック

2019-10-09 16-44-19

設定できたら「Create and configure」から詳細設定に進みます。

Validations
  • 「Required field」にチェックを入れ必須項目としましょう。

  • 「Accept only specified entry type」にチェックを入れ、「category」を選択しましょう。

    これは、選択肢をcategoryのみに絞る設定です。

以上「Save」して完了です。

最後にblogPostモデルの「Save」だけ忘れずに行いましょう。

ちなみに、フィールドはドラック&ドロップで並び替えができます。

2019-10-09 16-50-32

(コラム)Contentfulの関連付け「One reference」と「Many references」の違い

One reference とは、1対1の関係性を表します。

記事1つに対して、1つのカテゴリーが関連付くと言う意味です。

記事に2つのカテゴリーの関連付けはできません。

対して、Many references とは1対nの関連付けを意味します。

例えばタグは、記事とMany referencesの関係性にすることで、複数関連付けすることが出来ます。

既存の記事を修正する

blogPostのコンテンツを開くとエラーが出ているはずです。

2019-10-09 16-59-12

これは、カテゴリーモデルを必須にしたためです。

そこで全ての記事を修正していきます。

右のリンク「Link existing entry」から先ほど作成したカテゴリーを設定しましょう。

カテゴリーを設定したら、必ず右の「Publish changes」ボタンで変更を保存してください。

2019-10-09 17-04-22

新規記事を作成する

全ての記事を修正したら、新たに25個の記事を追加しましょう。

1つのカテゴリーに、10個の記事があれば、デモ表示に丁度良いです。

ちなみに記事を選択した状態で「Duplicate」をクリックすると、記事をコピーすることが出来ます。

2019-10-09 17-32-47

注意)slugフィールドはユニーク制約がついているので、コピー後の再編集が必要です。

最後に記事が作成できたか確認を行う

Nuxt.jsを起動して、記事作成の確認を取りましょう。

$ yarn dev

記事が30個表示されていれば成功です。

お疲れ様でした。

まとめ

今回は、Contentfulにカテゴリーモデルを作成し、blogPostモデルとの関連付けを行いました。

この関連付けの機能が使えるようになれば、タグや子カテゴリーも簡単に作成できます。

商品管理やブログ運用程度であれば十分に対応できます。

さて、次回は?

次はいよいよカテゴリーの表示ですね。

次回はカテゴリーの個別ページを作成して関連付く記事一覧を表示していきます。

お楽しみん!

あなたの力になれること
私自身が独学でプログラミングを勉強してきたので、一人で学び続ける苦しみは痛いほど分かります。そこで、当時の私がこんなのあったら良いのにな、と思っていたサービスを立ち上げました。周りに質問できる人がいない、答えの調べ方が分からない、ここを聞きたいだけなのにスクールは高額すぎる。そんな方に向けた単発・短期間メンターサービスを行っています。
独学プログラマのサービス
ブログ構築の投稿
1
  • 更新情報
  • /
  • #01
ブログ構築カテゴリーの記事修正、更新情報【2020/05/19追記: このカテゴリーの更新を一旦終了といたします】
2
  • 更新情報
  • /
  • #02
Nuxt.js v2.13.0新機能メモの公開とv2.12.2にダウングレードする方法
1
  • 今回作るアプリケーション
  • /
  • #01
Nuxt.jsとContentfulで作るマイブログ
1
  • 開発環境にNuxt.jsを立ち上げる
  • /
  • #01
Nuxt.jsを動かす環境を構築する
2
  • 開発環境にNuxt.jsを立ち上げる
  • /
  • #02
Nuxt.jsのプロジェクトを作成する
3
  • 開発環境にNuxt.jsを立ち上げる
  • /
  • #03
Hello Nuxtを表示する
1
  • Nuxt.jsアプリを公開する
  • /
  • #01
Nuxt.jsをデプロイする前の事前準備を行う
2
  • Nuxt.jsアプリを公開する
  • /
  • #02
Netlifyの初期セットアップとNuxt.jsのデプロイを行う
3
  • Nuxt.jsアプリを公開する
  • /
  • #03
NetlifyにデプロイしたNuxt.jsに独自ドメインを設定する
1
  • Contentfulのセットアップ
  • /
  • #01
【Nuxt.js Universal】Vuetify2.0にバージョンアップしよう
2
  • Contentfulのセットアップ
  • /
  • #02
【画像で説明】Contentfulの使い方。初期設定と各メニューについて学ぶ
3
  • Contentfulのセットアップ
  • /
  • #03
Contentfulにブログ記事モデルを作成していこう
4
  • Contentfulのセットアップ
  • /
  • #04
ContentfulからAPIを取得してNuxt.jsで記事一覧を表示する
1
  • ブログ記事周りの構築
  • /
  • #01
Nuxt.jsにContentfulのブログ記事を表示する
2
  • ブログ記事周りの構築
  • /
  • #02
Contentfulから取得した下書き記事を開発環境に表示する
3
  • ブログ記事周りの構築
  • /
  • #03
Nuxt.jsのgenerateプロパティに動的なルーティングを追加する
4
  • ブログ記事周りの構築
  • /
  • #04
【Nuxt.js】middlewareを活用しブログ記事取得のパフォーマンスを改善する
1
  • カテゴリーページの構築
  • /
  • #01
【Contentful】カテゴリーモデルとブログ記事モデルの関連付け
2
  • カテゴリーページの構築
  • /
  • #02
【Nuxt.js × Contentful】ブログ記事に関連付くカテゴリーを表示する
3
  • カテゴリーページの構築
  • /
  • #03
【Nuxt.js × Contentful】カテゴリー記事一覧ページを作成する
1
  • タグ機能の構築
  • /
  • #01
Contentfulにタグモデルを作成し関連付けを行う
2
  • タグ機能の構築
  • /
  • #02
【Nuxt.js × Contentful】タグに関連付いたブログ記事を表示する
3
  • タグ機能の構築
  • /
  • #03
Contentfulのincludesを使って関連モデルを取得しタグ一覧ページを作成する
4
  • タグ機能の構築
  • /
  • #04
Vuetify2のdata-tableの使い方を学んで、タグ一覧ページをレイアウト
1
  • Nuxt.jsブログカスタマイズ
  • /
  • #01
Twitterシェアボタン、フォローボタンの作り方【Nuxt.js Universalモード編】
2
  • Nuxt.jsブログカスタマイズ
  • /
  • #02
Contentfulの全文検索を使ったNuxt.jsブログ内検索の実装
独学プログラマ
独学でも、ここまでできるってよ。
CONTACT
Nuxt.js制作のご依頼は下記メールアドレスまでお送りください。