Contentful のタグを変えた話
トップページに自分的に Hot な カテゴリ (各記事にはタグという形でカテゴリを複数持たせている) を絞り込んだ Specials というカラムを設けた。これをやるにあたってタグの使い方を変更したのでメモしておく。
このサイトでは CMS として Contentful を利用している。Contentful には自由にコンテンツタイプを作成する機能があり、結構自由な記事情報を構築することができる。
タグもこのコンテンツタイプ (コンテントモデルと Contentful では呼ばれている) を使って構築していて、多対多な構造になっている。
さて、Specials カラムを構築するにあたって、複数のタグについての記事のみ抽出して表示したかったのだが、そんなに簡単にできることではなかった。ドキュメントを読むとどうやらフィルタリング機能をつかって多対多のエントリーをフィルタするのはできないようだ。
もちろんエントリーを絞り込むだけではだめで、該当タグ以外のものを除外する必要もある。もちろん絞り込みができない以上、除外などはもっとできない。
実は Contentful にはタグのような機能を持った機能が用意されている。個人的にはコンテントモデルをつかっていろいろなデータの関連を表現したかったのだが、標準で用意されているタグを使うと絞り込みが出来るということがわかった。おそらく特殊なデータ構造をしているのだろう。はじめから標準機能を使っておけばよかったと後悔である。当初はタグにいろいろなメタデータを持たせるなどの野望があったりしたのだ。
既存の Tags モデルをあったもの全てを標準機能のタグに登録し、既存の記事のタグをつけかえることでフィルタリングをすることができた。現在見ている記事のタグはまったく見た目的には変化をしていないが、データ構造的にはまったく異なるものになった。