--- title: Writing Articles icon: mingcute:edit-4-line createTime: 2025/10/08 10:06:06 permalink: /en/guide/write/ tags: - Guide - Quick Start --- VuePress fully supports [Standard Markdown Syntax](../markdown/basic.md), while also allowing page metadata (such as title, creation time, etc.) to be defined via Frontmatter in [YAML](https://dev.to/paulasantamaria/introduction-to-yaml-125f) format. Additionally, the theme provides extensive [Markdown Extended Syntax](../markdown/extensions.md). You can not only write HTML directly in Markdown but also use Vue components to enhance content expressiveness. ## Frontmatter Page Configuration Frontmatter allows you to customize the properties and behavior of each page. Frontmatter is located at the top of the file, enclosed by `---` delimiters. ```md title="post.md" --- title: Article Title createTime: 2024/09/08 22:53:34 permalink: /article/9eh4d6ao/ --- Page content starts after the second `---`. ``` ::: details What is Frontmatter? Frontmatter is a configuration block using [YAML](https://dev.to/paulasantamaria/introduction-to-yaml-125f) format, located at the top of a Markdown file and delimited by `---`. It is recommended to read the [Frontmatter Detailed Guide](../auto-frontmatter.md) for the complete syntax specification. ::: ## Automatic Frontmatter Generation After the development server starts, the theme automatically generates necessary Frontmatter fields for Markdown files in the documentation source directory, including: **title**, **creation time**, and **permalink**. This feature reduces the repetitive workload for content creators and provides essential data support for the theme's subsequent functionalities. ```md --- title: Title createTime: 2024/09/08 22:53:34 permalink: /article/9eh4d6ao/ --- ``` ### Title Generation Rules The theme uses the filename as the article title by default. During parsing, the sequence number and extension from the [File Naming Convention](#file-naming-convention) are automatically removed. For example, `1.my-article.md` will generate the title `my-article`. ### Creation Time The theme uses the file's creation time as the baseline, formatted as `yyyy/MM/dd HH:mm:ss`, to serve as the article creation time. ### Permalink The **permalink** is the fixed access URL for the article after publication. Once generated, this link remains constant even if the file path or name changes. Setting the permalink in advance helps: - Improve **SEO effectiveness** by avoiding frequent changes to indexed URLs - Maintain **consistency** in the site's overall link style ### Disabling Automatic Generation If full manual control over Frontmatter is required, automatic generation can be disabled via [Theme Configuration > autoFrontmatter](../../config/theme.md#autofrontmatter). ```ts title=".vuepress/config.ts" twoslash import { defineUserConfig } from 'vuepress' import { plumeTheme } from 'vuepress-theme-plume' export default defineUserConfig({ theme: plumeTheme({ // Completely disable all automatic generation // autoFrontmatter: false, // Enable specific features as needed autoFrontmatter: { permalink: true, // Generate permalink createTime: true, // Generate creation time title: true, // Generate title }, collections: [{ type: 'post', dir: 'blog', title: 'Blog', // Configure for specific collection autoFrontmatter: { permalink: true, createTime: true, title: true } }] }) }) ``` ## File Organization Conventions ::: info Note The following examples are based on the baseline file structure from the [Project Structure](./project-structure.md). ::: The theme provides a flexible file organization approach. You can create Markdown files with any preferred names within the `docs` directory. ### Directory Naming Convention The theme applies the following rules to directory names within the `docs` directory: For `post` type collections: - Directory names serve as article **categories** - Multi-level directories are supported, with subdirectories acting as children of parent categories When sorting is required, use the following naming pattern (applicable to all collection types): ```ts :no-line-numbers const dir = /\d+\.[\s\S]+/ // Format: Number + . + Category Name // Example: 1.Frontend ``` The numeric part serves as the **sorting basis**. Directories without numbers are sorted according to default rules. **Example Structure:** ::: file-tree - docs - blog \# post type collection - 1.Frontend - 1.html/ - 2.css/ - 3.javascript/ - 2.Backend/ - DevOps/ - typescript \# doc type collection - 1.Basics - 1.Variables.md - 2.Types.md - 2.Advanced.md ::: The theme automatically generates category pages or sidebars based on the directory structure. ### File Naming Convention File naming follows the same rules as the [Directory Naming Convention](#directory-naming-convention), providing sorting basis for the [auto-generated sidebar](../../config/notes.md#auto-generated-sidebar) in the notes feature. ## Start Writing You can now create Markdown files under the `docs` directory to start writing. For a complete description of Markdown extension features, please refer to the [Extended Syntax Documentation](../markdown/extensions.md). Since the theme automatically generates article titles by default, the main content should start with level 2 headings `## Level 2 Heading`. If `autoFrontmatter.title` is disabled, start with level 1 headings `# Level 1 Heading`. ### Article Tags Add tags to articles via `frontmatter.tags`: ```md --- title: My Article tags: - Tag1 - Tag2 --- ```