CraftCMS3 新しいセクションで追加テンプレートを作る
published: , updated: 2021-08-28
投稿にも慣れてきたのでフィールドを新しく作成してフォーマット化したくなってきました。
例えば記事投稿であれば、概要、アンカー目次、画像などは新しくフィールドを追加しても良いかと考えました。
CraftCMSがECサイトやデータフォーマット化されたコンテンツに向いていると思われるのは、フィールドを任意に作成できる柔軟性ではないかと思います。
新しく別のエントリーテンプレートを作る流れ
これまでのエントリー用のフィールドは、投稿概要、メイン画像、コンテンツ、カテゴリ、タグ。デフォルトでタイトルや作成日、更新日などがあります。 新規のエントリーテンプレートはフィールドを追加して入力しやすくします。今回は本などを紹介する用のテンプイレートです。
レイアウトイメージは、表紙の画像はサイズが縦長なので、画像と目次配2カラム配置にその下に今までと同じような1カラムのコンテンツ部分を作成します。結果はこちら Magazine
1. 新規のカテゴリグループを作成する
カテゴリーを複数作ることができ、親子関係まで管理できるCraftCMSですが、ブログ程度だと必要ないのですが今回はあえて新しいカテゴリーを作ってみます。 フィールドを作ってカテゴリーでも良いのですが、どっちが先でも行ったり来たりするのでカテゴリーから作成します。
現在は、categoryなので新規はtypesにします。
- 名前 : types
- ハンドル : types
2. 新規のタググループを作成する
同じように、タグも新しいグループを作成します。 タグは同じでも良いかなと思いますが、新しいグループが作成できるので試しも含めてlabelにします。
- 名前 : label
- ハンドル : label
3. 新規のフィールドを作成する
管理しやすくするためにフィールドの新規グループを作成します。
今回は別のフィールド名で全て新規に作成しましたが、データベースを見て同じ目的であれば共通にするほうが良いと思いました。(後述:反省点)
新規フィールド item_
- 見出し2 h2 : heading
- メイン画像用の figcaption
- 発売日などの日付 : sale
- プレーンテキスト : figure
- 目次アンカーリストのフィールド : プレーンテキスト(マークダウン入力): index
既存フィールドと同じ
- 概要:プレーンテキスト: description
- 画像:画像 : image
- コンテンツ:プレーンテキスト(マークダウン入力): content
- カテゴリ:type
- タグ:label
4. 新規のセクション
新規のセクションをitemsにします。
- 名前 : items
- ハンドル : items
- セクションタイプ : Channel
- エントリーURl : items/{slug}
- テンプレート: items/_slug
5. ルート設定
アクセスするURLとテンプレートを指定します。 - カテゴリ types/(slug) - タグ labels/(slug) - コンテンツ items/(slug)
6. テンプレート
いくつかポイントがありますが、新規にセクションを作成しましたので注意が必要かもしれません。
エントリーページ(items)
セクションごとのインデックスの場合、entries
ではセクションを指定します。
{% set query = craft.entries()
.section('items')
.limit(5) %}
全てのエントリーを表示する場合は、section
指定はしない。
{% set query = craft.entries()
.limit(5) %}
カテゴリ(type)、タグ(label)
カテゴリ/タグのインデックスページでは、group('グループ名')
を指定します。
全てのカテゴリ、タグを同じ表示にする場合は、group('グループ名')
指定はしない。
{% set myLabels = craft.tags()
.orderBy('slug asc')
.group('label') %}
{% set Labels = myLabels.all() %}
7. 反省点
反省というか思いつきでやっている結果なので止むを得ずですが、今後サイトを構築を提案する際には考えたい。
わざわざ新しくカテゴリやタグ、フィールドを作成する必要があったのかに尽きます。
例えばAmazon ショッピング、Amazon プライム・ビデオ、Amazon プライム・ミュージックぐらいのサービスの違いがあるとわかるのですが規模が大きすぎる。
シンプルに考えると
- カテゴリのグループによってデザインを変えたいなど
- EC向けがあることからジャンルが多いショッピングモールが向いている。ブランドかメーカーごとのカテゴリは必要になるかもしれない。
- コーポレートサイト内にブログやニュースリリースなど全ての情報がある場合には、分けたほうが都合が良い場合はありそうです。
カテゴリの考え方
どんな時でも課題となり、個人的には作成しては壊してしまいがちです。CraftCMSでは、カテゴリの親子関係は作成できます。サイトの規模感によりますが、タグとの組み合わせをよく考える必要があります。
タグ
カテゴリとの関係も含めてルールが必要な部分ですが、タグは共通で良いと思います。実は、タグが削除もできないし名前をつけるフィールドも用意してあるのに管理ができないので困ってましたが、プラグインの「Tags」を使うことで削除できたり、別の値を持たせることができるようになりました。
フィールド
3. 新規のフィールドを作成する でも書きましたがフィールドはできるだけ共通化し、セクションでグループ分け管理が良さそうです。データベースを見るとわかるのですがフィールドを作るほどデータ列は増えていきます。最小限のフィールド構成を心がけたい。
結局、規模感の問題にもなりそうなので、データをある程度セットし検索性を試してみたい。