Craft cmsのカテゴリの設定とテンプレートの書き方

Posted on:2017-08-24

去年と今年の初めはくらいは病気になったりぶっ倒れたりと色々ありましたが、なんとか今日で32歳になりました。
生きてます。w

最近、勉強しているCraft cmsについての記事を書こうと思います。
Twig形式にまだまだ慣れていないですが、単純なブログ構成でカテゴリの設定とテンプレート書き方について書きます。

カテゴリの設定とテンプレートの書き方

一般的なブログ構成を想定した内容で、カテゴリとテンプレートの書き方についてまとめました。

カテゴリの登録方法

Craftのカテゴリを登録するには、まずはカテゴリーグループを作るところから始まります。
実際初めて触る時に、カテゴリーグループがカテゴリーだと思いこんでて作り少し戸惑いました。
MTではカテゴリーグループ的な感じではなく、ブログ単位でカテゴリーを登録するのでグループ的な発想がなかったです。

カテゴリグループ = ブログ みたいな感じでしょうか。
それよりも少し違いますが、作成時はカテゴリグループはエントリーのチャンネルとは紐付いてはいないため各チャンネルに紐付けるようです。

カテゴリグループを作成

  • 新しいカテゴリグループをクリック
  • 作成されたグループ名をクリック

カテゴリグループの設定

  • カテゴリグループを入力
  • ハンドルを入力(テンプレート内で使用する値)
  • カテゴリURL形式を入力
  • カテゴリテンプレートを入力(craft/templates内のファイルを選択)

カテゴリグループの設定

フィールドの配置では、カテゴリグループに色々なフィールドをもたせることができますが、
今回は、カテゴリのタイトルとスラグだけなので設定はしていません。

カテゴリグループにカテゴリを登録

カテゴリグループを作成後、設定のカテゴリページに開き「カテゴリーを編集する」をクリックして移動します。

  • 新しいカテゴリーをクリック
  • カテゴリのタイトルを入力
  • カテゴリのスラグを入力(半角英数字小文字のみ)

カテゴリグループの設定

カテゴリグループの設定

今回作成したグループ Log Categoryグループに登録が表示されたら完了になります。

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

そのままでは、エントリに登録にカテゴリを出すことが出来ません。
チャンネルに登録できるようにカテゴリ用のフィールドを作成します。

  • 設定 → フィールド → 新規フィールド
  • グループを選択
  • フィールド名を入力
  • ハンドルを入力
  • フィールドのタイプを選択(カテゴリ)
  • ソースを選択(先程作成したカテゴリグループを選ぶ)
  • カテゴリ入力欄を任意のチャンネルの入力タイプ側にフィールドを設置する

フィールドの作成

チャンネルの入力タイプに登録

フロントページの実装

フロントページで、カテゴリを表示するテンプレートタグの紹介になります。
Twigの書き方を熟知していないので、もっと書き方は研究していきたいと思っています。。
まずはできたものを紹介します。

エントリーページのカテゴリー表示

記事詳細画面での登録しているカテゴリを表示する方法になります。

<pre class="hljs">
<code class="twig">

</code>
</pre>

エントリーに登録されているカテゴリを表示

カテゴリ一覧を表示させる方法になります。

{% set categories = entry.categories %} //
エントリーに登録しているカテゴリを変数に格納
<ul>
  {% for cagegory in categories %} // カテゴリの情報をループ
  <li>
    <a href="{{ url('/log/'~cagegory.slug) }}">{{ cagegory.title }}</a>
  </li>
  {% endfor %}
</ul>

エントリーに登録しているカテゴリの表示やカテゴリに記事が登録しているテンプレートの書き方については、こんな感じになります。

もっとテンプレート書き方を自由に書けるようにしていき、テンプレート実装のベストプラクティス見つけていればと思います。

次回は、Tagの取扱についても記事にまとめてみたいと思います。
カテゴリと違ったハマリポイントがありました。(;´Д`)ハァハァ

明後日はCMS大阪夏祭り2017へ

明後日は楽しみにしているCMS大阪夏祭り2017に参加します。
大阪は、高校の修学旅行以来なので15年ぶり!(すごい暑そう。。)
CMS大阪夏祭り2017は日本最大級のCMSコミュニティー合同イベントになります。
触ったことのないCMSの話が聞けるのは勉強になるので、情報仕入れていきたいと思います。
※Craft cmsもっと突っ込んで聞きたい(笑)