Astroのファイル内でトップページとそれ以外で条件分岐する方法
WordPressのis_front_page()
のように、.astroファイル内でトップページとそれ以外のページで条件分岐する方法を解説しています。
フロントマター内で使用できるAstro.url.pathname
を利用することで、現在開いているページのパスの情報を取得することができます。
トップページだけ要素を表示する
---const isIndexPage = Astro.url.pathname === "/";---
{isIndexPage && <p>トップページで表示する要素</p>}
トップページ以外で要素を表示する
---const isIndexPage = Astro.url.pathname === "/";---
{!isIndexPage && <p>トップページ以外で表示する要素</p>}
トップページのロゴだけタグをh1にする
サイトによってはトップページのロゴを<h1>
タグにし、下層ページでは<div>
タグにすることがあると思います。その場合は次のようにするとうまくいきます。
---const isIndexPage = Astro.url.pathname === "/";const Tag = isIndexPage ? "h1" : "div";---
<header> <Tag>ロゴ</Tag> <nav> <ul> <li>...</li> </ul> </nav></header>
他にもAstro.url.pathname
を使用することでトップページだけでなく、パスに応じて個別にページ単位で条件分岐をすることが可能です。