🐼

Newtについて

2024/07/27に公開

Newt - ヘッドレスCMS

コンテンツ管理の新しいスタンダード | ヘッドレスCMS「Newt」

SDKドキュメント

https://github.com/Newt-Inc/newt-client-js

チュートリアル

チュートリアル | ヘッドレスCMS「Newt」

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を指定する
  • skiplimitでページネーション、コンテンツの総数はtotal (APIレスポンスとしてskip,limit,total,itemsが返ってくる)
  • 前後の記事を取得する - フィルター演算子gt,ltを使う (クエリ指定の考え方がとても参考になった)

公開日の降順で並べらている時、現在のコンテンツの次の(作成日が過去の)コンテンツを取得したいとする。この時、現在のコンテンツの作成日より小さいコンテンツを(作成日が)降順に並び替えたものの一番最初の記事がそれにあたる。

https://www.newt.so/docs/tutorials/understanding-query-parameters#3. クエリに関するよくある質問(ユースケース別)

Discussion