Newtについて
Newt - ヘッドレスCMS
コンテンツ管理の新しいスタンダード | ヘッドレスCMS「Newt」
SDKドキュメント
https://github.com/Newt-Inc/newt-client-js
チュートリアル
Tips
Next.js でコンテンツの更新を反映する方法
即時性が低い場合(タイムラグが許容できる場合):
- デプロイHookを使用してサイト全体をビルドし直す
- 実装がシンプルで分かりやすい
- コンテンツ数が多くビルド時間が長くなる場合は、On-demand Revalidation の利用を検討
即時性が中程度の場合(数分のタイムラグが許容できない場合):
- Route Segment Config で revalidate を設定する(例: revalidate = 60)
- アクセス時に動的にページを生成し、一定期間はキャッシュを利用
- ある程度の即時性が求められる場合に適している
即時性が高い場合(完全な即時性が必要な場合):
- Route Segment Config で revalidate = 0 または dynamic = 'force-dynamic' を設定する
- アクセス毎に動的にページを生成し、常に最新のデータを表示
- ECサイトの商品在庫数の表示など、リアルタイムデータが必要な場合に適している
一般的には、即時性が低い場合はデプロイHookを使用したサイト全体のビルド、即時性が中程度の場合は revalidate の設定、即時性が高い場合は revalidate = 0 または dynamic = 'force-dynamic' の設定が推奨される。
ただし、コンテンツ数が多くビルド時間が長くなる場合は、On-demand Revalidation の利用を検討すると良き。これにより必要なページのみ更新することができ、全体のビルド時間を短縮できる。
お問い合わせフォーム
NewtのForm Appを使う。フォームのエンドポイントが作成されるのでそれを利用する。
メールアドレスをinputとして入れておけば、そのメールアドレスへの自動返信メールを設定できる。
また通知を受け取るメールアドレスを指定して(複数可)、受信通知メールも設定可能。
NewtとNext.jsを利用して、問い合わせフォームを作成する
確認画面を入れたい
React Hook Form の FormProvider と useFormContextを使う。LayoutにFormProviderをおけば、その配下のページでフックを使える。確認画面だけではなく、複数ステップのあるフォームで便利。
Next.jsを利用した問い合わせフォームに確認画面を追加する
スパム対策をしたい
スパム対策 として Google reCAPTCHA v3を設定できる
reCAPTCHA
reCAPTCHA | Google for Developers
reCAPTCHA バッジを非表示にしたい
よくある質問 | reCAPTCHA | Google for Developers
プレビュー
Next.jsのDraft ModeとNewtのプレビュー設定を使う
Newt API Tokenを使うと下書きのコンテンツ含め、常に最新のデータにアクセス可能
モデル一覧の右上のプレビュー設定よりプレビューURLを指定できる
Next.jsのDraft Modeを利用して、プレビュー環境を作成する
クエリ
ユースケースに合わせて柔軟にクエリできる
- 降順にしたい場合は
-
をつける -
カスタムオーダーは
_sys.customOrder
を指定する - skipとlimitでページネーション、コンテンツの総数はtotal (APIレスポンスとしてskip,limit,total,itemsが返ってくる)
- 前後の記事を取得する - フィルター演算子gt,ltを使う (クエリ指定の考え方がとても参考になった)
公開日の降順で並べらている時、現在のコンテンツの次の(作成日が過去の)コンテンツを取得したいとする。この時、現在のコンテンツの作成日より小さいコンテンツを(作成日が)降順に並び替えたものの一番最初の記事がそれにあたる。
https://www.newt.so/docs/tutorials/understanding-query-parameters#3. クエリに関するよくある質問(ユースケース別)
Discussion