【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制作のご依頼は下記メールアドレスまでお送りください。