はじめに
Contentfulの利用方法については、基本的に公式ドキュメントに全て載っています。
しかし、英語のドキュメントであることから、読み解くのに時間がかかってしまうため、
私が実務で利用したケースと合わせて、基本的なEntryの取得方法のみをまとめました。
前提
gem contentful
を利用しています。
初期化
インスタンス化にはspace ID
とaccess token
が必須です。
また、インスタンス化の際に利用できるオプションはREADMEに全て記載されています。
require 'contentful'
client = Contentful::Client.new(
space: '<SPACE>',
access_token: '<ACCESS_TOKEN>'
)
エントリー
spaceのすべてのエントリを取得する
space内の全てのエントリを取得できるため、コンテントタイプの壁を超えます。
実務では利用してません。
entries = client.entries
単一のエントリを取得する
エントリIDを指定する方法です。ActiveRecordでいうfind
です。
entry = client.entry('<entry_id>')
検索パラメータ
特定のコンテントタイプを指定してエントリを取得する
これを基本的に使用してデータを取得します。
entries_by_content_type = client.entries(content_type: '<content_type_id>')
取得するフィールドを選択する
これは不要なfields
を含めたくない場合に利用しました。
例えば、作成日時の「年」の情報のみを取得したい場合です。
また、パラメータは複数組み合わせて利用可能です。
entries = client.entries(content_type: '<content_type_id>', select: 'fields.productName')
完全一致
ハッシュのキーはfields.name
などもでき、完全一致を検索します。
entries = client.entries('sys.id' => '<value>')
完全不一致
ハッシュのキーの末尾に[ne]
を付与します。
entries = client.entries('sys.id[ne]' => '<value>')
範囲
記事のデータを年毎で分け、取得する場合に使用しました。
-
[lt]
: 未満。 -
[lte]
: 以下。 -
[gt]
:より大きい。 -
[gte]
: 以上。
# Less than:
entries = client.entries('sys.createdAt[lt]' => '2013-08-28')
# Less than or equals:
entries = client.entries('sys.createdAt[le]' => '2013-08-28')
# Greater than:
entries = client.entries('sys.createdAt[gt]' => '2013-08-28')
# Greater than or equals:
entries = client.entries('sys.createdAt[ge]' => '2013-08-28')
並び替え
デフォルトでは、
公開タイムスタンプの降順 (sys.updatedAt
) と
ID の昇順 (sys.id
)に並べられます。
これは、
最近公開されたアイテムが一番上に近く表示され、
同じ公開タイムスタンプを持つアイテムの順序が、アイテムのID(sys.id
)に基づくことを意味します。
作成日順:昇順
entries = client.entries(order: 'sys.createdAt')
作成日順:降順
フィールドの前に-
記号を付けることで、並べ替え順序を逆にすることができます。
entries = client.entries(order: '-sys.createdAt')
複数指定
entries = client.entries(order: ['sys.createdAt', 'sys.id'])
まとめ
初めは「スペース」「コンテントタイプ」「エントリ」といった言葉が何を指すのかを明確にすると理解が進むと思います。
他にも様々なことができますので、公式ドキュメントをGoogle翻訳などを利用して、読んでみることをおすすめします。
参考文献