目次

  • はじめに
  • GitHub のアカウントを作成する
  • 開発環境を立ち上げる
  • ソースコードを保存する
  • サイトを公開する
  • トップページを作る
  • CSSでサイトを装飾する
  • 新しいページを作る
  • 画像を表示する
  • ブログ記事を作る
  • デザインを調整する
  • サイトのURLを変更する
  • おわりに

ブログ記事を作る

所要時間の目安 : 15分

サイトにブログ記事を投稿できるようにしてみましょう。


# 必要なファイルを作成する

上記の画像が完成系です。必要な作業は以下の通りです。

  • src フォルダ内に、layouts フォルダを作成する
  • layouts フォルダ内に BlogPost.astro ファイルを作成する
  • pages フォルダ内に、posts フォルダを作成する
  • posts フォルダ内に 2022-11-13.md ファイルを作成する
    • ファイル名は任意で大丈夫です(拡張子は .md としてください)
  • pages フォルダ内に、blog.astro ファイルを作成する

フォルダは以下のマークをクリックすることで作成できます。

この時点では、作成したファイルの内容は空のままで問題ありません。


# ブログ記事を書く

2022-11-13.md ファイルに内容を書き込みます。

---
layout: "../../layouts/BlogPost.astro"
title: "はじめての記事"
date: "2022-11-13"
---

# はじめに

はじめてのブログです。

https://do-it-yourself.vercel.app/

# 画像の表示

![画像の説明](/yourself.png)

ブログ記事はマークダウン(.md) 記法で書きます。マークダウンは、文書を記述するための言語のひとつです。記法はとてもシンプルなので、各々調べてみてください。

.md ファイルだとページの見た目を設定できないので、layout: でページのレイアウトを設定するファイルを参照しています。


# レイアウトの設定

先ほど作った BlogPost.astro ファイルを編集します。以下のコードをコピペしてください。

---
const { content: { title, date } } = Astro.props;
---
<html lang="ja">
	<head>
		<meta charset="utf-8" />
		<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
		<meta name="viewport" content="width=device-width" />
		<meta name="generator" content={Astro.generator} />
		<title>{title}</title>
		<style >
		</style>
	</head>
	<body>
		<h1>{title}</h1>
		<p>{date}</p>
    <article>
      <slot />
    </article>
    <br>
    <a href="/blog">blog</a>
	</body>
</html>

サイトに表示されるブログ記事は、このファイルを元に描画されることになります。

const { content: { title, date } } = Astro.props; で .md ファイルに書いた title と date の情報を受け取っています。

<slot /> のところに、.md ファイルに書いた本文が埋め込まれます。


# 記事一覧ページの作成

blog.astro ファイルを編集します。

---
const allPosts = await Astro.glob('../pages/posts/*.md')
---
<html lang="en">
	<head>
		<meta charset="utf-8" />
		<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
		<meta name="viewport" content="width=device-width" />
		<meta name="generator" content={Astro.generator} />
		<title>Blog</title>
		<style>
		</style>
	</head>
	<body>
		<h1>Blog</h1>
    <ul>
      {allPosts.map((post) => <li><a href={post.url}>{post.frontmatter.title}</a></li>)}
    </ul>
    <a href="/">Home</a>
	</body>
</html>

const allPosts = await Astro.glob('../pages/posts/*.md') で、 posts フォルダにあるマークダウン形式のファイルを全て読み込んでいます。

それをループを回して、リスト形式で並べている… みたいなことをやっています。これは呪文のようなものなので、理解しなくても大丈夫なやつです。

こういう風に書くことで、posts フォルダにマークダウン形式のファイルを作成するだけで記事一覧ページに自動でその記事が追加されるようになります。


# トップページにリンクを追加

トップページからブログ記事一覧ページに飛べるようにしておきます。

index.astro を編集します。リンクの数が増えてきたので、リスト形式で並べるようにしています。

---
---
<html lang="ja">
	<head>
		<meta charset="utf-8" />
		<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
		<meta name="viewport" content="width=device-width" />
		<meta name="generator" content={Astro.generator} />
		<title>n1sym Page</title>
		<style >
		</style>
	</head>
	<body>
		<h1>n1sym web</h1>
		<p>ここは n1sym の個人サイトです。</p>
		<ul>
			<li><a href="/about">about</a></li>
			<li><a href="/illust">illust</a></li>
			<li><a href="/blog">blog</a></li>
		</ul>
	</body>
</html>

これでプレビュー画面からブログ記事が見れるようになるはずです。


# 公開しているページに変更を反映させる

記事が表示されていることが確認できたら、Commit ボタンをクリックして公開ページにも反映させてみましょう。




前: 画像を表示する 次: デザインを調整する



Created by n1sym
Inspired by https://diy-anime.com/