Site Structure
This guide explains how to set up a proper site structure for your Valaxy site using the valaxy-theme-antfu theme.
站点结构
本指南将解释如何使用 valaxy-theme-antfu 主题为您的 Valaxy 站点设置适当的站点结构。
Overview
When you first create a Valaxy site, it only includes a basic structure with an index page. To take full advantage of the valaxy-theme-antfu theme, you’ll need to create additional pages and directories.
概述
当您首次创建 Valaxy 站点时,它只包含带有索引页面的基本结构。要充分利用 valaxy-theme-antfu 主题,您需要创建额外的页面和目录。
Basic Directory Structure
Here’s the recommended directory structure for a Valaxy site using the valaxy-theme-antfu theme:
基本目录结构
以下是使用 valaxy-theme-antfu 主题的 Valaxy 站点的推荐目录结构:
your-valaxy-site/
├── pages/
│   ├── index.md           # Home page
│   ├── posts/             # Blog posts directory
│   │   ├── post1.md
│   │   └── post2.md
│   ├── notes/             # Notes directory
│   │   ├── index.md       # Notes landing page
│   │   ├── note1.md
│   │   └── note2.md
│   ├── demos/             # Demos directory
│   │   ├── index.md       # Demos landing page
│   │   └── demo1.md
│   ├── talks.md           # Talks page
│   ├── features.md        # Features page
│   ├── notes.md           # Notes landing page
│   └── demos.md           # Demos landing page
├── public/                # Static assets
├── components/            # Custom components
├── styles/                # Custom styles
├── valaxy.config.ts       # Valaxy configuration
└── site.config.ts         # Site configurationSetting Up Your Site
Follow these steps to set up a proper site structure:
设置您的站点
按照以下步骤设置适当的站点结构:
1. Create the Home Page
Start by creating or updating your home page at pages/index.md:
1. 创建主页
首先创建或更新位于 pages/index.md 的主页:
---
title: My Valaxy Site
description: A personal site built with Valaxy
image: https://example.com/og.png
art: plum
---
<AntfuSubNav />
## About Me
Hello! I'm a developer passionate about web technologies.
## My Projects
<div grid="~ cols-[max-content_1fr] gap-1">
  <div text-right pr2 op50 font-bold>Project 1</div>
  <AntfuTextCopy>My awesome project</AntfuTextCopy>
  <div text-right pr2 op50 font-bold>Project 2</div>
  <AntfuTextCopy>Another great project</AntfuTextCopy>
</div>2. Create the Posts Directory
Create a directory for your blog posts:
2. 创建文章目录
为您的博客文章创建一个目录:
mkdir -p pages/postsAdd some blog posts to this directory:
---
title: My First Blog Post
date: 2023-01-01
categories: Technology
tags:
  - web
  - javascript
duration: 5min
---
# My First Blog Post
This is the content of my first blog post.3. Create the Notes Structure
Set up the notes structure:
3. 创建笔记结构
设置笔记结构:
mkdir -p pages/notesCreate a notes landing page at pages/notes.md:
---
title: My Notes
art: plum
display: 'Notes'
---
<AntfuSubNav />
<div class="prose m-auto mb-8 mt-6">
  <p>
    A collection of my notes on various topics.
  </p>
</div>
<AntfuListPosts only-date type="note" />Add some notes to the pages/notes directory:
---
title: Quick Tip
date: 2023-01-01
type: note
---
# Quick Tip
Here's a quick tip about something useful.4. Create the Demos Structure
Set up the demos structure:
4. 创建演示结构
设置演示结构:
mkdir -p pages/demosCreate a demos landing page at pages/demos.md:
---
title: Demos
display: Components
subtitle: Interactive demonstrations
description: Interactive demonstrations of theme components
art: dots
---
<!-- @layout-full-width -->
<AntfuListDemos />Add some demos to the pages/demos directory:
---
title: Button Demo
date: 2023-01-01
type: demo
---
# Button Demo
<div class="flex gap-2">
  <button class="btn">Default</button>
  <button class="btn btn-primary">Primary</button>
  <button class="btn btn-secondary">Secondary</button>
</div>5. Create a Features Page
Create a features page at pages/features.md:
5. 创建功能页面
在 pages/features.md 创建功能页面:
---
title: Features
display: Features
description: List of features available
wrapperClass: 'text-center'
art: dots
projects:
  Core Features:
    - name: 'Feature 1'
      link: '/docs/feature1'
      desc: 'Description of feature 1'
      icon: 'i-carbon-rocket'
    - name: 'Feature 2'
      link: '/docs/feature2'
      desc: 'Description of feature 2'
      icon: 'i-carbon-document'
---
<!-- @layout-full-width -->
<AntfuListProjects :projects="frontmatter.projects" />6. Create a Talks Page
Create a talks page at pages/talks.md:
6. 创建演讲页面
在 pages/talks.md 创建演讲页面:
---
title: Talks
display: 'Talks'
art: plum
---
<AntfuSubNav />
<div pt-5 />
# My Talks
| Talk             | Event        | Date       | Links                  |
| ---------------- | ------------ | ---------- | ---------------------- |
| **Talk Title 1** | Conference 1 | 2023-01-01 | [Slides](#) [Video](#) |
| **Talk Title 2** | Conference 2 | 2023-02-01 | [Slides](#) [Video](#) |
<h1 important="mb--4 mt-15">Upcoming Talks</h1>
<AntfuListPosts type="talk" :extra="frontmatter.items" />Configuring Navigation
After creating your pages, you’ll need to update your theme configuration to include them in the navigation menu. Edit your valaxy.config.ts file:
配置导航
创建页面后,您需要更新主题配置以将它们包含在导航菜单中。编辑您的 valaxy.config.ts 文件:
import type { ThemeConfig } from 'valaxy-theme-antfu'
import { defineConfig } from 'valaxy'
export default defineConfig<ThemeConfig>({
  theme: 'antfu',
  themeConfig: {
    nav: [
      {
        text: 'Home',
        link: '/',
        icon: 'i-ri-home-line'
      },
      {
        text: 'Posts',
        link: '/posts',
        icon: 'i-ri-article-line'
      },
      {
        text: 'Notes',
        link: '/notes',
        icon: 'i-ri-sticky-note-line'
      },
      {
        text: 'Demos',
        link: '/demos',
        icon: 'i-ri-code-box-line'
      },
      {
        text: 'Talks',
        link: '/talks',
        icon: 'i-ri-presentation-line'
      },
      {
        text: 'Features',
        link: '/features',
        icon: 'i-ri-function-line'
      }
    ],
    // Other configuration options...
  }
})Adding Custom Components
You can create custom components to enhance your site. Place them in the components directory:
添加自定义组件
您可以创建自定义组件来增强您的网站。将它们放在 components 目录中:
mkdir -p componentsFor example, create a custom button component at components/MyButton.vue:
<script setup>
defineProps({
  primary: {
    type: Boolean,
    default: false
  }
})
</script>
<template>
  <button class="my-button" :class="{ 'is-primary': primary }">
    <slot />
  </button>
</template>
<style scoped>
.my-button {
  padding: 0.5rem 1rem;
  border-radius: 0.25rem;
  background-color: #f1f1f1;
  border: 1px solid #ddd;
  cursor: pointer;
}
.my-button.is-primary {
  background-color: var(--va-c-primary);
  color: white;
  border: 1px solid var(--va-c-primary-dark);
}
</style>Then use it in your Markdown files:
<MyButton>Click Me</MyButton>
<MyButton primary>Primary Button</MyButton>Adding Custom Styles
You can add custom styles to customize the appearance of your site. Create a styles directory:
添加自定义样式
您可以添加自定义样式来自定义网站的外观。创建一个 styles 目录:
mkdir -p stylesCreate a custom CSS file at styles/custom.css:
/* Custom styles */
.prose h1 {
  color: var(--va-c-primary);
}
.custom-container {
  padding: 1rem;
  border-radius: 0.5rem;
  background-color: #f9f9f9;
}Then import it in your valaxy.config.ts file:
import type { ThemeConfig } from 'valaxy-theme-antfu'
import { defineConfig } from 'valaxy'
export default defineConfig<ThemeConfig>({
  theme: 'antfu',
  // Import custom styles
  unocss: {
    safelist: [
      'i-ri-home-line',
      'i-ri-article-line',
      'i-ri-sticky-note-line',
      'i-ri-code-box-line',
      'i-ri-presentation-line',
      'i-ri-function-line'
    ]
  },
  // Other configuration options...
})Conclusion
By following this guide, you’ve set up a proper site structure for your Valaxy site using the valaxy-theme-antfu theme. This structure provides a solid foundation for your content and makes it easy to navigate and maintain.
结论
通过遵循本指南,您已经使用 valaxy-theme-antfu 主题为您的 Valaxy 站点设置了适当的站点结构。这种结构为您的内容提供了坚实的基础,使其易于导航和维护。