Ir al contenido

Escribir un plugin

Un plugin añade cosas a la tienda sin tocar su código: escuchar lo que pasa, cambiar lo que se calcula, meter una pantalla en el panel.

Terminal window
npx pcc-plugin nuevo mi-plugin
cd mi-plugin && npm install && npm run dev

Guardas un fichero y se recarga solo. No hace falta reiniciar la tienda.

import { definirPlugin } from "@pcreative/plugin-contract"
export default definirPlugin({
arrancar(api, { registro }) {
api.on("pedido.creado", (pedido) => {
registro.info(`Pedido ${pedido.number}: ${pedido.total.amount} €`)
})
},
})

Escribe api.on(" y el editor te enseña los eventos disponibles, ya tipados. Es lo único que hay que saber para empezar.

Un evento avisa de algo que ya ha pasado. No puedes cambiar el resultado:

api.on("cliente.registrado", (cliente) => { /* dale la bienvenida */ })

Un filtro te deja modificar algo antes de que se use:

api.filtro("carrito.totales", (totales, carrito) => {
// p. ej. un descuento propio
return totales
})

Los puntos de enganche que hay hoy:

Eventos Filtros
pedido.creado, pedido.cancelado carrito.totales
cliente.registrado envios.disponibles
carrito.abandonado pagos.disponibles
inventario.agotado correo.contenido
menu.principal, inicio.tarjeta

Los dos últimos son de interfaz: meten una entrada en el menú del panel o una tarjeta en la portada.

Copia la carpeta del plugin en plugins/ del backend. Aparece en Panel → Extensiones.

Si tus plugins viven en otro sitio, dilo con PLUGINS_DIR.

Para apagar uno sin desinstalarlo:

Terminal window
PLUGINS_DISABLED=uno,otro

Útil cuando un plugin da problemas y quieres seguir vendiendo mientras lo miras.

Si tu plugin declara ajustes, salen solos en Panel → Extensiones: no tienes que escribir la pantalla. Los secretos se guardan aparte y no se devuelven al navegador — el panel enseña «hay una clave guardada», nunca la clave.

El contrato incluye comprobación de licencia. Se verifica contra una clave pública (LICENSE_PUBLIC_KEY), y se verifica sin conexión: una tienda que se queda sin internet no puede quedarse sin sus plugins.

La clave es pública a propósito: solo sirve para comprobar firmas, nunca para crearlas.

A propósito. Un plugin escrito hoy debería seguir valiendo si mañana la tienda cambia por dentro. Por eso los eventos hablan de pedido y carrito, no de las tablas de nadie.

  • README del contrato de plugins