Demo OpenShared

OpenShared Craft3 CMS デス

CraftCMS3 新しいセクションで追加テンプレートを作る

published: , updated: 2020-08-04

画像:CraftCMS3 新しいセクションで追加テンプレートを作る

投稿にも慣れてきたのでフィールドを新しく作成してフォーマット化したくなってきました。

例えば記事投稿であれば、概要、アンカー目次、画像などは新しくフィールドを追加しても良いかと考えました。

CraftCMSがECサイトやデータフォーマット化されたコンテンツに向いていると思われるのは、フィールドを任意に作成できる柔軟性ではないかと思います。

新しく別のエントリーテンプレートを作る流れ

これまでのエントリー用のフィールドは、投稿概要、メイン画像、コンテンツ、カテゴリ、タグ。デフォルトでタイトルや作成日、更新日などがあります。 新規のエントリーテンプレートはフィールドを追加して入力しやすくします。今回は本などを紹介する用のテンプイレートです。

レイアウトイメージは、表紙の画像はサイズが縦長なので、画像と目次配2カラム配置にその下に今までと同じような1カラムのコンテンツ部分を作成します。結果はこちら Magazine

  1. 新規のカテゴリーグループを作成する
  2. 新規のタググループを作成する
  3. 新規のフィールドを作成する
  4. 新規のセクション
  5. ルート設定
  6. テンプレート
  7. 反省点

1. 新規のカテゴリグループを作成する

カテゴリーを複数作ることができ、親子関係まで管理できるCraftCMSですが、ブログ程度だと必要ないのですが今回はあえて新しいカテゴリーを作ってみます。 フィールドを作ってカテゴリーでも良いのですが、どっちが先でも行ったり来たりするのでカテゴリーから作成します。

現在は、categoryなので新規はtypesにします。

2. 新規のタググループを作成する

同じように、タグも新しいグループを作成します。 タグは同じでも良いかなと思いますが、新しいグループが作成できるので試しも含めてlabelにします。

3. 新規のフィールドを作成する

管理しやすくするためにフィールドの新規グループを作成します。

今回は別のフィールド名で全て新規に作成しましたが、データベースを見て同じ目的であれば共通にするほうが良いと思いました。(後述:反省点

新規フィールド item_

既存フィールドと同じ

4. 新規のセクション

新規のセクションをitemsにします。

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 プライム・ミュージックぐらいのサービスの違いがあるとわかるのですが規模が大きすぎる。

シンプルに考えると

1. カテゴリの考え方
どんな時でも課題となり、個人的には作成しては壊してしまいがちです。CraftCMSでは、カテゴリの親子関係は作成できます。サイトの規模感によりますが、タグとの組み合わせをよく考える必要があります。

2. タグ
カテゴリとの関係も含めてルールが必要な部分ですが、タグは共通で良いと思います。実は、タグが削除もできないし名前をつけるフィールドも用意してあるのに管理ができないので困ってましたが、プラグインの「Tags」を使うことで削除できたり、別の値を持たせることができるようになりました。

3. フィールド
3. 新規のフィールドを作成する でも書きましたがフィールドはできるだけ共通化し、セクションでグループ分け管理が良さそうです。データベースを見るとわかるのですがフィールドを作るほどデータ列は増えていきます。最小限のフィールド構成を心がけたい。

結局、規模感の問題にもなりそうなので、データをある程度セットし検索性を試してみたい。