StudioCMS-Plugins sind ein leistungsstarkes Werkzeug, mit dem du die Funktionalität von StudioCMS erweitern kannst. Sie bieten eine einfache und flexible Möglichkeit, neue Funktionen zu deinem StudioCMS-Projekt hinzuzufügen. Im Folgenden findest du eine Übersicht über die StudioCMS-Plugins und ihre Funktionsweise.
StudioCMS-Plugins sind ähnlich wie Astro-Integrationen, aber sie haben zusätzliche Informationen, die an das Funktionsobjekt angehängt sind. Diese Informationen werden von StudioCMS verwendet, um zu bestimmen, wie das Plugin geladen und verwendet werden soll. StudioCMS-Plugins werden verwendet, um die Funktionalität von StudioCMS zu erweitern, indem neue Funktionen hinzugefügt oder bestehende geändert werden.
Seitentyp-Definition. Wenn dies der Fall ist, möchte das Plugin den Prozess der Seitenerstellung ändern können
pageTypes:
interfaceArray<T>
Array<{
/**
* Beschriftung, die in der Select-Eingabe angezeigt wird
*/
label: string
Beschriftung, die in der Select-Eingabe angezeigt wird
label: string;
/**
* Kennung, die in der Datenbank gespeichert wird
* @example
* // Einzelner Seitentyp pro Plugin
* 'studiocms'
* '@studiocms/blog'
* // Mehrere Seitentypen pro Plugin (verwende eindeutige Bezeichner für jeden Typ, um Konflikte zu vermeiden)
* '@mystudiocms/plugin:pageType1'
* '@mystudiocms/plugin:pageType2'
* '@mystudiocms/plugin:pageType3'
* '@mystudiocms/plugin:pageType4'
*/
identifier: string
Kennung, die in der Datenbank gespeichert wird
@example// Einzelner Seitentyp pro Plugin
'studiocms'
'@studiocms/blog'
// Mehrere Seitentypen pro Plugin (verwende eindeutige Bezeichner für jeden Typ, um Konflikte zu vermeiden)
'@mystudiocms/plugin:pageType1'
'@mystudiocms/plugin:pageType2'
'@mystudiocms/plugin:pageType3'
'@mystudiocms/plugin:pageType4'
identifier: string;
/**
* Beschreibung, die unter der Überschrift „Seiteninhalt“ angezeigt wird, wenn dieser Typ ausgewählt ist
*/
description: string
Beschreibung, die unter der Überschrift „Seiteninhalt“ angezeigt wird, wenn dieser Typ ausgewählt ist
description: string;
/**
* Der Pfad zu der eigentlichen Komponente, die für den Seiteninhalt angezeigt wird
*
* Die Komponente sollte eine Eigenschaft `content` haben, die ein String ist, um den aktuellen Inhalt anzeigen zu können.
*
* **HINWEIS:** Derzeit musst du die Formular-ID `page-content` für die Inhaltsausgabe verwenden. Dein Editor sollte auch in der Lage sein, die Formularübermittlung zu verarbeiten.
*
* **HINWEIS:** Du kannst `studiocms/markdown` oder `studiocms/html` als Fallback-Wert verwenden, wenn du mit HTML- oder Markdown-Inhalten arbeitest!
*
* @example
* ```ts
* import { createResolver } from 'astro-integration-kit';
Der Pfad zu der eigentlichen Komponente, die für den Seiteninhalt angezeigt wird
Die Komponente sollte eine Eigenschaft content haben, die ein String ist, um den aktuellen Inhalt anzeigen zu können.
HINWEIS: Derzeit musst du die Formular-ID page-content für die Inhaltsausgabe verwenden. Dein Editor sollte auch in der Lage sein, die Formularübermittlung zu verarbeiten.
HINWEIS: Du kannst studiocms/markdown oder studiocms/html als Fallback-Wert verwenden, wenn du mit HTML- oder Markdown-Inhalten arbeitest!
API-Endpunkte werden verwendet, um Seiten dieses Typs zu erstellen, zu bearbeiten und zu löschen,
Endpunkte erhalten den vollständigen Astro APIContext von der Astro APIRoute.
Die Datei sollte mindestens einen der folgenden Punkte exportieren:
Um ein StudioCMS-Plugin zu definieren, musst du ein Objekt erstellen, das dem Typ StudioCMSPlugin entspricht. Dieses Objekt sollte ähnlich wie das folgende aussehen, wobei du beachten musst, dass die folgenden Eigenschaften erforderlich sind:
identifier: Der Bezeichner des Plugins aus der package.json-Datei.
name: Die Bezeichnung des Plugins, die im StudioCMS Dashboard angezeigt werden soll.
studiocmsMinimumVersion: Die Mindestversion von StudioCMS, die benötigt wird, damit das Plugin funktioniert.
Hier ist ein Beispiel für eine StudioCMS-Plugin-Definition, die alle erforderlichen Eigenschaften enthält und eine Astro-Integration für eigene Logik bereitstellt:
The console module provides a simple debugging console that is similar to the
JavaScript console mechanism provided by web browsers.
The module exports two specific components:
A Console class with methods such as console.log(), console.error() and console.warn() that can be used to write to any Node.js stream.
A global console instance configured to write to process.stdout and
process.stderr. The global console can be used without importing the node:console module.
Warning: The global console object's methods are neither consistently
synchronous like the browser APIs they resemble, nor are they consistently
asynchronous like all other Node.js streams. See the note on process I/O for
more information.
Example using the global console:
console.log('hello world');
// Prints: hello world, to stdout
console.log('hello %s', 'world');
// Prints: hello world, to stdout
console.error(newError('Whoops, something bad happened'));
// Prints error message and stack trace to stderr:
// Error: Whoops, something bad happened
// at [eval]:5:15
// at Script.runInThisContext (node:vm:132:18)
// at Object.runInThisContext (node:vm:309:38)
// at node:internal/process/execution:77:19
// at [eval]-wrapper:6:22
// at evalScript (node:internal/process/execution:76:60)
// at node:internal/main/eval_string:23:3
constname = 'Will Robinson';
console.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to stderr
Example using the Console class:
constout = getStreamSomehow();
consterr = getStreamSomehow();
constmyConsole = newconsole.Console(out, err);
myConsole.log('hello world');
// Prints: hello world, to out
myConsole.log('hello %s', 'world');
// Prints: hello world, to out
myConsole.error(newError('Whoops, something bad happened'));
// Prints: [Error: Whoops, something bad happened], to err
Prints to stdout with newline. Multiple arguments can be passed, with the
first used as the primary message and all additional used as substitution
values similar to printf(3)
(the arguments are all passed to util.format()).
In diesem Beispiel definieren wir ein StudioCMS-Plugin namens My Plugin, das StudioCMS Version 0.1.0-beta.8 oder höher benötigt. Das Plugin stellt außerdem eine Astro-Integration bereit, die eine Meldung auf der Konsole protokolliert, wenn der astro:config:setup-Hook aufgerufen wird.
Weitere Informationen zur Erstellung von Plugins findest du in der „Plugins nützlich machen“-Anleitung.