Astroにブログ機能を追加した話

Astroで組んだ場合の、新規ブログ機能追加メモ

当サイトはAstroで組んでいるのですが、ニュース欄はすでにあってもブログ機能はなかったので、新しく追加した時の記録です。

コレクションを増やすところから

Astroには「Content Collections」という仕組みがあって、記事の型をconfig.tsに定義しておけます。すでにニュース欄で使っていたので、同じ要領でブログ用のコレクションを追加しました。

タイトル・日付・説明文・画像・タグ・下書きフラグ、くらいの最低限の項目を用意しておけば、あとから記事を書くたびにこの型に沿ってMarkdownを追加するだけで済む想定です。

つまずいたポイント: reCAPTCHAのバッジ

ブログとは直接関係ないけど、同じ時期にお問い合わせフォームにreCAPTCHA v3を入れた。ここで少しハマったのが、Astroはコンポーネントごとにスタイルがスコープされる仕組みになっていて、reCAPTCHAのバッジ要素はJS側で外部に注入されるため、そのままだとCSSが当たらないということが判明しました。

<style is:global>を使ってグローバルスコープでスタイルを書くことで解決しました。Astroでサードパーティのウィジェットを扱うときは、注入される要素がコンポーネントの外に出るケースがあることを覚えておくとよさそうです。

公開範囲の考え方

ブログは思い切ってトップナビには載せず、フッターだけからたどれるようにしました。検索エンジンにはインデックスさせる(noindexは付けない、サイトマップにも含める)方針にしたので、検索経由で見つけてもらいつつ、サイトの顔であるトップページ側の見え方はシンプルなまま保つようにしました。

「導線は用意するけど目立たせすぎない」くらいの温度感が、今のところちょうどいいと思っています。