Astroのファイル内でトップページとそれ以外で条件分岐する方法

WordPressのis_front_page()のように、.astroファイル内でトップページとそれ以外のページで条件分岐する方法を解説しています。

フロントマター内で使用できるAstro.url.pathnameを利用することで、現在開いているページのパスの情報を取得することができます。

トップページだけ要素を表示する

foo.astro
---
const isIndexPage = Astro.url.pathname === "/";
---
{isIndexPage && <p>トップページで表示する要素</p>}

トップページ以外で要素を表示する

foo.astro
---
const isIndexPage = Astro.url.pathname === "/";
---
{!isIndexPage && <p>トップページ以外で表示する要素</p>}

トップページのロゴだけタグをh1にする

サイトによってはトップページのロゴを<h1>タグにし、下層ページでは<div>タグにすることがあると思います。その場合は次のようにするとうまくいきます。

Header.astro
---
const isIndexPage = Astro.url.pathname === "/";
const Tag = isIndexPage ? "h1" : "div";
---
<header>
<Tag>ロゴ</Tag>
<nav>
<ul>
<li>...</li>
</ul>
</nav>
</header>

他にもAstro.url.pathnameを使用することでトップページだけでなく、パスに応じて個別にページ単位で条件分岐をすることが可能です。

この記事を書いた人

写真:ブール 代表 西川雅人

Masato Nishikawa

ウェブ制作の現場でコーディングパートナーとして活動しているコーダーです。実務で得た知見やノウハウを、このブログで発信しています。

コーディングや
WordPress実装の
ご相談を承っています。

新規制作から運用フェーズの修正まで柔軟に対応します。
お見積りや実装可否の確認など、お気軽にご連絡ください。