FrontMatter CMS Usage
FrontMatter CMS Usage
Overview
The FrontMatter CMS extension provides a powerful content management interface directly within VS Code for your Jekyll site. It offers a WordPress-like editing experience with visual content management, media handling, and taxonomy organization.
Table of Contents
- FrontMatter CMS Usage
Getting Started
1. Installation
The FrontMatter extension should already be installed as part of the workspace recommendations. If not:
- Open VS Code Extensions panel (
Ctrl+Shift+X
) - Search for “FrontMatter”
- Install the “FrontMatter” extension by Elio Struyf
2. Opening the CMS
You can access the FrontMatter CMS in several ways:
-
Command Palette:
Ctrl+Shift+P
→ “FrontMatter: Open dashboard” -
Task Runner:
Ctrl+Shift+P
→ “Tasks: Run Task” → “FrontMatter: Start CMS”
3. Content Management Interface
The CMS provides several panels:
- Content Overview: Browse all your posts and pages
- Media Library: Manage images and other assets
- Taxonomies: Organize tags and categories
- Snippets: Insert predefined content blocks
Content Types
The workspace is configured with three content types:
Default Pages
- Simple pages with basic metadata
- Used for: About pages, landing pages, etc.
- Location:
docs/
directory
Blog Posts
- Full-featured blog posts with advanced metadata
- Used for: News, tutorials, announcements
- Location:
docs/_posts/
directory - Filename format:
YYYY-MM-DD-title.md
Documentation
- Technical documentation with navigation order
- Used for: User guides, API docs, tutorials
- Location:
docs/_docs/
directory
Creating Content
Using the Visual Editor
- Open FrontMatter dashboard
- Click “Create Content”
- Select content type (Post, Documentation, or Default)
- Fill in the metadata fields:
- Title: Content title
- Description: SEO description
- Categories: Organize content (limit varies by type)
- Tags: Keyword tags for discoverability
- Featured Image: Visual representation
- Draft Status: Control publication
Field Types Available
- Text Fields: Title, description, author
- Date/Time: Publication and modification dates
- Choice Fields: Layout selection, callout types
- Image Fields: Featured images with alt text
- Boolean Fields: Draft status, TOC enable/disable
- Number Fields: Navigation order for docs
- Tags/Categories: Taxonomy management
Content Snippets
Pre-configured snippets for common content patterns. Access snippets through:
- FrontMatter Dashboard: In the content editor panel
-
VS Code Command Palette:
Ctrl+Shift+P
→ “FrontMatter: Insert snippet” - Editor Context Menu: Right-click in markdown files → “Insert FrontMatter snippet”
Standard Snippets
Image with Caption
Usage: Insert images with automatic caption formatting
-
Prompts for:
- Image source (with file picker integration)
- Alt text for accessibility
- Caption text
- Example output:
Code Block
Usage: Insert syntax-highlighted code blocks with language selection
-
Prompts for:
- Programming language (dropdown menu)
- Code content
-
Available languages:
- TypeScript, JavaScript, Bash, YAML, JSON
- Markdown, Ruby, Liquid, HTML, CSS, XML, SQL
- Example output:
Callout/Alert Box
Usage: Insert callout boxes with interactive type selection
-
Prompts for:
- Callout type (dropdown menu)
- Message content
-
Available types:
- 💡 Pro Tip
- ⚠️ Warning
- ✅ Success
- ❌ Error
- ℹ️ Info
-
Example output:
> **💡 Pro Tip**: Your helpful message here
Liquid Tag Snippets
The workspace includes specialized interactive snippets for Jekyll Liquid tags. These snippets prompt you for input when inserted:
Liquid Variable
Usage: Insert `` syntax with custom variable name
- Prompts for: Variable name
-
Example output:
{{ variable_name }}
(wherevariable_name
is replaced with your input) -
Common examples:
{{ page.title }}
,{{ site.description }}
Liquid Tag
Usage: Insert single Liquid tag with custom content
- Prompts for: Tag content
-
Example output:
{% assign var = value %}
,{% include file.html %}
Liquid For Loop
Usage: Insert complete for loop structure with interactive options
-
Prompts for:
- Loop item variable name
- Collection to iterate over (dropdown with common options)
- Loop content template
-
Available collections:
-
site.posts
- All blog posts -
site.pages
- All pages -
site.docs
- All documentation -
site.data.categories
- Category data -
site.data.tags
- Tag data -
page.tags
- Current page tags -
page.categories
- Current page categories
-
- Example output:
Liquid If Statement
Usage: Insert conditional block with custom condition and content
-
Prompts for:
- Condition to check
- Content when condition is true
- Example output:
Interactive Snippet Benefits
These interactive snippets provide:
- Guided Input: Prompts ensure correct syntax
- Pre-configured Options: Dropdown menus with common Jekyll objects
- Template Completion: Full code blocks with proper structure
- Error Prevention: Reduces syntax mistakes in Liquid code
Common Liquid Patterns (for reference)
Site Information:
Page Information:
Content Loops:
Conditional Content:
Data File Access:
Media Management
Asset Organization
-
Public Folder:
docs/assets/
-
Image Storage:
docs/assets/images/
- Automatic Processing: Images are automatically linked and optimized
Taxonomy Management
Categories
Predefined categories available:
- tutorial
- getting-started
- development
- typescript
- jekyll
- testing
- deployment
- configuration
- best-practices
Tags
Common tags for content organization:
- typescript, jekyll, development
- vscode, wsl, testing
- playwright, jest, markdown
- documentation, ci-cd
- github-actions, eslint, prettier
- ruby, bundler, liquid, frontmatter
Data File Integration
Taxonomies are managed through YAML data files:
docs/_data/categories.yml
docs/_data/tags.yml
Workflow Integration
Jekyll Preview
FrontMatter integrates with Jekyll’s live preview:
- Start Jekyll server:
npm run dev:jekyll
- Preview changes at
http://localhost:4000
Version Control
FrontMatter automatically:
- Tracks content changes
- Integrates with Git workflows
- Updates modification dates
- Maintains frontmatter formatting
Advanced Features
Custom Fields
Add custom fields to content types by editing frontmatter.json
:
Content Templates
Templates are automatically applied based on content type:
- Posts:
docs/_posts/YYYY-MM-DD-title.md
- Documentation:
docs/_docs/title.md
Bulk Operations
Use the dashboard for:
- Bulk tagging and categorization
- Mass content updates
- Publication scheduling
- Draft management
Troubleshooting
Common Issues
- CMS not loading: Ensure the FrontMatter extension is enabled
- Content not appearing: Check file locations match configuration
- Images not displaying: Verify asset paths and public folder settings
- Metadata errors: Validate YAML frontmatter syntax
Configuration Files
Key configuration files:
-
frontmatter.json
: Main CMS configuration (primary configuration) -
docs/_config.yml
: Jekyll site configuration -
workspace.code-workspace
: VS Code integration (minimal FrontMatter settings)
💡 Pro Tip: All FrontMatter CMS configuration is now centralized in
frontmatter.json
to avoid conflicts and maintain consistency. The workspace file only contains basic VS Code integration settings.
Tips and Best Practices
- Use consistent naming: Follow Jekyll naming conventions
- Optimize images: Use the built-in optimization tools
- Organize taxonomies: Keep categories broad, tags specific
- Preview regularly: Test content with Jekyll’s live reload
- Version control: Commit content changes regularly