8 changed files with 76 additions and 35 deletions
@ -1,13 +1,19 @@
|
||||
import { defineContentConfig, defineCollection } from '@nuxt/content' |
||||
import { defineContentConfig, defineCollection, z } from '@nuxt/content' |
||||
|
||||
// Lookup resolved from path: rootDir/content
|
||||
// see: https://github.com/nuxt/content/issues/3161
|
||||
|
||||
export default defineContentConfig({ |
||||
collections: { |
||||
content: defineCollection({ |
||||
type: "page", |
||||
source: "**/*.md" |
||||
}) |
||||
} |
||||
collections: { |
||||
content: defineCollection({ |
||||
type: "page", |
||||
source: "**/*.md", |
||||
schema: z.object({ |
||||
date: z.date(), |
||||
img: z.string(), |
||||
sub: z.string(), |
||||
tags: z.array(z.string()), |
||||
}) |
||||
}) |
||||
} |
||||
}) |
||||
|
@ -1,6 +1,10 @@
|
||||
--- |
||||
title: "My Second Blog Post" |
||||
description: "This is another article." |
||||
navigation: false |
||||
sub: "Bash" |
||||
img: "/img/personal-website/reset-password.png" |
||||
date: "2025-03-02" |
||||
--- |
||||
|
||||
This is another article. |
||||
|
@ -1,18 +1,47 @@
|
||||
<template> |
||||
<div> |
||||
<h1>Articles</h1> |
||||
<ul> |
||||
<li v-for="article in articles" :key="article.path"> |
||||
<NuxtLink :to="article.path">{{ article.title }}</NuxtLink> |
||||
</li> |
||||
</ul> |
||||
|
||||
<div v-for="article in articles" :key="article.path"> |
||||
<pre>{{ article }}</pre> |
||||
<div class="row pt-5" v-for="article in articles" :key="article.path"> |
||||
<div class="col-5 col-lg-4 col-xl-3"> |
||||
<NuxtLink v-if="article.img" :to="article.path"> |
||||
<img class="img-fluid" :src="article.img as string" :alt="article.title" loading="lazy" :title="article.title"> |
||||
</NuxtLink> |
||||
</div> |
||||
<div class="col-7 col-lg-8 col-xl-9"> |
||||
<NuxtLink v-if="article.img" :to="article.path"> |
||||
<h4><strong>{{ article.title }}</strong></h4> |
||||
</NuxtLink> |
||||
{{ article.description }}<br> |
||||
<i><small>{{ article.sub }}</small></i> |
||||
</div> |
||||
</div> |
||||
|
||||
<template v-if="isDev"> |
||||
<br> |
||||
<div v-for="article in articles" :key="article.path"> |
||||
<pre>{{ article }}</pre> |
||||
</div> |
||||
</template> |
||||
</div> |
||||
</template> |
||||
|
||||
<style scoped> |
||||
a { |
||||
text-decoration: none !important; |
||||
} |
||||
|
||||
a h4 { |
||||
color: var(--bs-body-color); |
||||
} |
||||
|
||||
a h4:hover { |
||||
color: var(--bs-link-hover-color); |
||||
} |
||||
</style> |
||||
|
||||
<script setup lang="ts"> |
||||
const { data: articles } = await useAsyncData("articles", () => queryCollection("content").all()) |
||||
import { useAsyncData, queryCollection } from "#imports"; |
||||
|
||||
const { data: articles } = await useAsyncData("articles", () => queryCollection("content").order("date", "DESC").all()) |
||||
</script> |
||||
|
Loading…
Reference in new issue