我使用 Gridsome 建立了一个博客,到目前为止一切正常。要创建新帖子,我只需在文件夹中创建一个新的 Markdown 文件Post
,它会自动呈现在前端。前端显示一个Blog.vue
带有分页的基本页面,其中显示每个帖子的标题、作者、日期、可点击和自动生成的标签,还有一个“阅读更多”按钮,单击该按钮会将用户带到Post.vue
显示博客文章的页面及其相关内容。我正在使用 graphQL 来显示每个帖子及其内容,以及使用的链接<page-query>
(我不会在这里发布它,因为我不确定它是否相关)。
每个帖子都有一个降价文件,并且在每个 .md 文件的 YAML 标头中,我可以tags
在我的 Vue 应用程序中放置类似于 twitter 主题标签的功能。单击后,用户将被定向到显示“所有已标记的帖子{标签名称}”的页面。这是通过将我的 Tag.vue 放在我的templates
文件夹中并在页面上使用以下查询来完成的。
还使用...
Tags { id
path
}
.. 在<page-query>
我的 Blog.vue 文件中
这是<page-query>
我用来获取所有带有特定标签的帖子的方法。
<page-query>
query ($id: String!){
tag (id: $id) {
title
belongsTo {
edges {
node {
... on Post {
id
title
excerpt
date (format: "MMMM Do, YYYY")
tags {
id
path
}
timeToRead
path
cover_image(width: 600, height:300, quality: 90, blur: 1)
}
}
}
}
}
}
</page-query>
这是我的 Tag.Vue
<h1 style="color: white">Posts tagged #{{ $page.tag.title }}</h1>
<article v-for="edge in $page.tag.belongsTo.edges" :key="edge.node.id">
<div class="postContainer">
<g-image :src="edge.node.cover_image" style="width: 100% ; padding-top: 15px;"></g-image>
<h2>{{ edge.node.title }}</h2>
<p>{{ edge.node.excerpt }}</p>
<p>Posted {{ edge.node.date }} - {{ edge.node.timeToRead }} min read</p>
<!-- <div v-html="edge.node.content"></div> -->
<div class="div1">
<g-link
class="span"
style="padding: .5em ; background-color: #091A28"
v-for="tag in edge.node.tags"
:to="tag.path"
:key="tag.id"
>{{ tag.id }}</g-link>
<br />
<div class="readMore">
<g-link :to="edge.node.path" class="gLinkPost">Read More</g-link>
</div>
</div>
</div>
</article>
我正在尝试使用 YAML 标头变量 "author:" 做一些非常相似的事情,但是我遇到了麻烦,并且诚然不知道从哪里开始。
我试图Authors.vue
在我的模板中添加一个文件夹,并制作一个类似的文件夹<page-query>
,但我无法让它工作,但我想我可能走在正确的轨道上。
我希望有一个“作者”页面,它只显示一个样式化的作者列表,点击后,将显示所有用户的帖子,并允许用户点击博客文章上的作者姓名,并将指向此“作者”页面。
这是我的结构以供更好的参考。
感谢您花时间阅读。预先感谢您的回复。