For a video tutorial watch this ☝🏿
First open your Nuxt project and install this
if you have Nuxt old version (version 2) install this:
yarn add @nuxt/content@^1
For new version, install this:
yarn add @nuxt/content
And in your nuxt.config.js
add this module
modules: ["@nuxt/content"],
Now make a file content\articles\First-post.md
and write
---
author:
name: Abhishek
bio: Subscribe for more such content
image: none
title: "this is title"
img: https://images.unsplash.com/photo-1600132806608-231446b2e7af?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1374&q=80
description: "This is desc!"
---
# title is hello world
Now make a file pages\blog\index.vue
and write this inside of index.vue
<template>
<div
class="max-w-3xl max-w-5xlmin-h-screen flex justify-center mx-auto my-12"
>
<main class="w-full mx-4">
<h1
class="text-3xl font-thin mb-6 mx-4 uppercase border-b-4 border-indigo-400"
>
My BLOG
</h1>
<section class="space-y-4 divide-y">
<article v-for="post of posts" :key="post.slug" class="pt-4">
<h2 class="text-lg mb-2 text-blue-700 hover:text-blue-800">
<nuxt-link :to="`/blog/${post.slug}`">
{{ post.title }}
</nuxt-link>
</h2>
<img :src="post.img" />
<!-- <img src="{{ post.img }}" /> -->
<span>
{{ post.description }}
</span>
</article>
</section>
</main>
</div>
</template>
<script>
export default {
data() {
return {
posts: [],
};
},
async fetch() {
this.posts = await this.$content("articles").fetch();
console.log(this.posts, "post");
},
};
</script>
Now make a file pages\blog\_slug.vue
and write this inside of _slug.vue
<template>
<div class="max-w-3xl mx-4 md:mx-auto min-h-screen my-12">
<div v-if="post">
<h1 class="text-2xl font-semibold mb-6">{{ post.title }}</h1>
<nuxt-content :document="post" />
<div class="mt-8">
<nuxt-link to="/blog" class="hover:underline">Back to blog</nuxt-link>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
post: null,
};
},
async fetch() {
this.post = (
await this.$content("articles")
.where({ slug: this.$route.params.slug })
.limit(1)
.fetch()
)?.[0];
},
head() {
return {
title: this.post?.title,
// meta: [{ name: "description", content: this.post?.description }],
meta: [
{
hid: "description",
name: this.post?.title,
content: this.post?.description,
},
],
};
},
};
</script>
<style>
h2 {
margin-top: 20px;
margin-bottom: 20px;
}
a {
color: blueviolet;
}
</style>
Now go to your localhost:3000/blog
you should see something like this
Top comments (0)