mirror of
https://github.com/pxdg-afk/paxad.git
synced 2026-08-23 03:41:07 -04:00
147 lines
3.8 KiB
Markdown
147 lines
3.8 KiB
Markdown
---
|
|
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.
|