Initial import
This commit is contained in:
@@ -0,0 +1,146 @@
|
||||
---
|
||||
title: Plugins
|
||||
image:
|
||||
---
|
||||
|
||||
Quartz's functionality is provided by a collection of first-party community plugins. Each plugin can be enabled, disabled, and configured via `quartz.config.yaml`. See [[configuration#Plugins|Configuration]] for details on how to manage plugins.
|
||||
|
||||
> [!info] Internal vs Community Plugins
|
||||
> Quartz has two kinds of plugins:
|
||||
>
|
||||
> - **Community plugins** are standalone repositories under [`quartz-community`](https://github.com/quartz-community). In TS overrides, they use `ExternalPlugin.X()` (imported from `.quartz/plugins`).
|
||||
> - **Internal plugins** are built into Quartz core (Assets, Static, ComponentResources, NotFoundPage). In TS overrides, they use `Plugin.X()` (imported from `./quartz/plugins`).
|
||||
|
||||
## Plugin types
|
||||
|
||||
Quartz plugins fall into several categories:
|
||||
|
||||
- **Transformers** process content during the build, e.g. parsing frontmatter, highlighting syntax, or resolving links.
|
||||
- **Filters** decide which content files to include or exclude from the output.
|
||||
- **Page Types** generate HTML pages — one per content file, folder, tag, canvas, or bases view.
|
||||
- **Components** render UI elements in the page layout (sidebars, headers, footers, etc.).
|
||||
|
||||
## First-party plugins
|
||||
|
||||
```base
|
||||
filters:
|
||||
and:
|
||||
- file.ext == "md"
|
||||
- file.inFolder("plugins")
|
||||
- "!file.name.startsWith('index')"
|
||||
- "!file.name.contains('Demo')"
|
||||
- "!file.name.contains('Static')"
|
||||
- "!file.name.contains('Assets')"
|
||||
- "!file.name.contains('ComponentResources')"
|
||||
- "!file.name.contains('NotFoundPage')"
|
||||
formulas:
|
||||
category: |
|
||||
if(file.hasTag("plugin/transformer"), "Transformer",
|
||||
if(file.hasTag("plugin/filter"), "Filter",
|
||||
if(file.hasTag("plugin/pageType"), "Page Type",
|
||||
if(file.hasTag("plugin/emitter"), "Emitter",
|
||||
if(file.hasTag("plugin/component"), "Component",
|
||||
"Other")))))
|
||||
properties:
|
||||
title:
|
||||
displayName: Plugin
|
||||
repository:
|
||||
displayName: Repository
|
||||
enabled:
|
||||
displayName: Enabled
|
||||
required:
|
||||
displayName: Required
|
||||
description:
|
||||
displayName: Description
|
||||
views:
|
||||
- type: table
|
||||
name: All Plugins
|
||||
groupBy:
|
||||
property: formula.category
|
||||
direction: ASC
|
||||
order:
|
||||
- title
|
||||
- repository
|
||||
- enabled
|
||||
- required
|
||||
- description
|
||||
sort:
|
||||
- property: formula.category
|
||||
direction: ASC
|
||||
- property: title
|
||||
direction: ASC
|
||||
- type: table
|
||||
name: Transformers
|
||||
filters:
|
||||
and:
|
||||
- file.hasTag("plugin/transformer")
|
||||
order:
|
||||
- title
|
||||
- repository
|
||||
- enabled
|
||||
- required
|
||||
- description
|
||||
sort:
|
||||
- property: title
|
||||
direction: ASC
|
||||
- type: table
|
||||
name: Filters
|
||||
filters:
|
||||
and:
|
||||
- file.hasTag("plugin/filter")
|
||||
order:
|
||||
- title
|
||||
- repository
|
||||
- enabled
|
||||
- required
|
||||
- description
|
||||
sort:
|
||||
- property: title
|
||||
direction: ASC
|
||||
- type: table
|
||||
name: Page Types
|
||||
filters:
|
||||
and:
|
||||
- file.hasTag("plugin/pageType")
|
||||
order:
|
||||
- title
|
||||
- repository
|
||||
- enabled
|
||||
- required
|
||||
- description
|
||||
sort:
|
||||
- property: title
|
||||
direction: ASC
|
||||
- type: table
|
||||
name: Emitters
|
||||
filters:
|
||||
and:
|
||||
- file.hasTag("plugin/emitter")
|
||||
order:
|
||||
- title
|
||||
- repository
|
||||
- enabled
|
||||
- required
|
||||
- description
|
||||
sort:
|
||||
- property: title
|
||||
direction: ASC
|
||||
- type: table
|
||||
name: Components
|
||||
filters:
|
||||
and:
|
||||
- file.hasTag("plugin/component")
|
||||
order:
|
||||
- title
|
||||
- repository
|
||||
- enabled
|
||||
- required
|
||||
- description
|
||||
sort:
|
||||
- property: title
|
||||
direction: ASC
|
||||
|
||||
```
|
||||
|
||||
> [!note] Multi-category plugins
|
||||
> Some plugins span multiple categories. **TableOfContents** is both a transformer and a component. **EncryptedPages** is a transformer, emitter, and component. They appear in each relevant category above.
|
||||
Reference in New Issue
Block a user