You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
senzapaura_es/static/admin/config.yml

405 lines
15 KiB

# Panel de contenido (Sveltia CMS).
#
# Escribe los mismos archivos Markdown de `src/content/`, así que nada de lo
# que ya funciona cambia: el esquema los sigue validando al compilar, git sigue
# guardando el historial de cada letra y el catálogo sigue sin hacer consultas.
#
# Los campos de aquí replican el esquema de `src/lib/content/schema.ts`. Cuando
# se añada un campo allí, hay que añadirlo también aquí, o el panel lo borrará
# al guardar una entrada.
backend:
name: github
# Cambiar por el repositorio real cuando exista. Trabajando en local no se
# usa: el flujo local abre la carpeta del proyecto desde el propio navegador.
repo: senzapaura/senzapaura
branch: main
# Dónde aterrizan las imágenes que se suban desde el panel. Si prefieres
# agruparlas por disco (static/images/<album>/), se mueven a mano después: al
# esquema le vale cualquier ruta que empiece por "/".
media_folder: static/images
public_folder: /images
collections:
# ---------------------------------------------------------------- estilos
- name: estilos
label: Estilos
label_singular: Estilo
description: Cada estilo es un segmento de la página de música.
folder: src/content/estilos
identifier_field: nombre
create: true
slug: '{{slug}}'
summary: '{{nombre}}'
fields:
- { name: nombre, label: Nombre, widget: string }
- name: resumen
label: Resumen
widget: string
required: false
hint: Una frase corta; acompaña al título del segmento.
- name: orden
label: Orden
widget: number
value_type: int
min: 0
default: 10
hint: Menor número, más arriba en la página de música.
- name: principal
label: Estilo principal
widget: boolean
default: false
required: false
hint: Solo uno puede serlo. Es el que abre la portada.
- { name: imagen, label: Imagen del segmento, widget: image, required: false }
- name: body
label: Texto introductorio
widget: markdown
required: false
# ---------------------------------------------------------------- álbumes
- name: albumes
label: Álbumes
label_singular: Álbum
description: Discos, EPs, singles y colecciones.
folder: src/content/albumes
identifier_field: titulo
create: true
slug: '{{slug}}'
summary: '{{titulo}} · {{fecha}}'
fields:
- { name: titulo, label: Título, widget: string }
- name: estilo
label: Estilo
widget: relation
collection: estilos
value_field: '{{slug}}'
display_fields: [nombre]
search_fields: [nombre]
- { name: fecha, label: Fecha de publicación, widget: datetime, date_format: 'YYYY-MM-DD', time_format: false, picker_utc: true }
- name: tipo
label: Tipo
widget: select
default: album
options: [album, ep, single, coleccion]
- { name: portada, label: Portada, widget: image, required: false }
- { name: sello, label: Sello, widget: string, required: false }
- { name: resumen, label: Resumen, widget: string, required: false }
- { name: destacado, label: Destacado, widget: boolean, default: false, required: false }
- name: edicion
label: Datos de edición
widget: object
required: false
collapsed: true
fields:
- { name: numeroCatalogo, label: Nº de catálogo, widget: string, required: false }
- name: formatos
label: Formatos
widget: select
multiple: true
required: false
options: [digital, cd, vinilo, casete]
- { name: pais, label: País, widget: string, required: false }
- name: creditos
label: Créditos del disco
widget: list
required: false
label_singular: Crédito
summary: '{{rol}}: {{nombre}}'
fields:
- { name: rol, label: Cometido, widget: string }
- { name: nombre, label: Nombre, widget: string }
- name: enlaces
label: Enlaces de escucha
widget: object
required: false
collapsed: true
fields:
- { name: spotify, label: Spotify, widget: string, required: false }
- { name: appleMusic, label: Apple Music, widget: string, required: false }
- { name: youtube, label: YouTube, widget: string, required: false }
- { name: bandcamp, label: Bandcamp, widget: string, required: false }
- name: body
label: Notas del disco
widget: markdown
required: false
# -------------------------------------------------------------- canciones
- name: canciones
label: Canciones
label_singular: Canción
description: El cuerpo del texto es la letra. Los saltos de línea se respetan.
folder: src/content/canciones
identifier_field: titulo
create: true
slug: '{{slug}}'
summary: '{{titulo}}'
fields:
- { name: titulo, label: Título, widget: string }
- name: estilo
label: Estilo
widget: relation
collection: estilos
value_field: '{{slug}}'
display_fields: [nombre]
search_fields: [nombre]
- name: album
label: Álbum
widget: relation
collection: albumes
value_field: '{{slug}}'
display_fields: [titulo]
search_fields: [titulo]
required: false
hint: Déjalo vacío si es un single suelto; irá al álbum «Singles» de su estilo.
- name: numero
label: Nº de pista
widget: number
value_type: int
min: 1
required: false
hint: Obligatorio si hay álbum. Se ignora en los singles.
- name: duracion
label: Duración
widget: string
required: false
pattern: ['^\d{1,2}:[0-5]\d$', 'Escríbela como m:ss, por ejemplo 4:12']
- { name: ano, label: Año, widget: number, value_type: int, min: 1900, max: 2200, required: false }
- name: audio
label: Archivo de audio
widget: file
required: false
media_folder: /media/audio/subidas
public_folder: subidas
hint: >-
Sube aquí el archivo completo, con el nombre que sea. Al arrancar
(`npm run dev`) se coloca en la carpeta de su disco, se genera el
fragmento de muestra y se rellena la duración si está vacía.
- { name: portada, label: Portada propia, widget: image, required: false, hint: 'Si la dejas vacía se usa la del álbum.' }
- name: interpretes
label: Intérpretes
widget: list
required: false
field: { name: nombre, label: Nombre, widget: string }
- name: letra
label: Firma de la letra
widget: list
required: false
hint: Déjalo vacío si la firmas tú.
field: { name: nombre, label: Nombre, widget: string }
- name: musica
label: Firma de la música
widget: list
required: false
hint: Déjalo vacío si la firmas tú.
field: { name: nombre, label: Nombre, widget: string }
- { name: destacada, label: Destacada, widget: boolean, default: false, required: false }
- name: instrumental
label: Instrumental
widget: boolean
default: false
required: false
hint: Sin letra. El cuerpo pasa a leerse como notas de la pieza.
- { name: alaVenta, label: A la venta, widget: boolean, required: false, hint: 'Por defecto se vende si tiene audio.' }
- name: inspiracion
label: De dónde sale
widget: text
required: false
hint: Separa los párrafos con una línea en blanco.
- name: etiquetas
label: Etiquetas
widget: list
required: false
hint: >-
De qué habla, cómo suena, con quién se canta. Cruzan el catálogo por
donde no lo hacen el estilo ni el disco.
- name: versiones
label: Alternativas musicales
widget: list
required: false
label_singular: Versión
summary: '{{nombre}}'
collapsed: true
fields:
- { name: nombre, label: Nombre del arreglo, widget: string }
- name: audio
label: Archivo de audio
widget: file
media_folder: /media/audio/subidas
public_folder: subidas
hint: El arreglo completo. Se coloca solo al arrancar, como el principal.
- name: duracion
label: Duración
widget: string
required: false
pattern: ['^\d{1,2}:[0-5]\d$', 'Escríbela como m:ss']
- { name: nota, label: Nota, widget: string, required: false }
- name: videos
label: Vídeos
widget: list
required: false
label_singular: Vídeo
summary: '{{titulo}}'
collapsed: true
fields:
- name: youtube
label: Enlace o id de YouTube
widget: string
hint: Pega el enlace tal cual; el esquema saca el id.
- { name: titulo, label: Qué es, widget: string, required: false }
- name: registro
label: Registro de la obra
widget: object
required: false
collapsed: true
fields:
- name: iswc
label: ISWC
widget: string
required: false
pattern: ['^[Tt][-\s.]?\d{3}[.\s]?\d{3}[.\s]?\d{3}[-\s]?\d$', 'Formato T-DDD.DDD.DDD-C']
hint: Identifica la OBRA. Es el mismo en todas sus versiones.
- name: isrc
label: ISRC
widget: string
required: false
pattern: ['^[A-Za-z]{2}[-\s]?[A-Za-z0-9]{3}[-\s]?\d{2}[-\s]?\d{5}$', 'Formato CC-XXX-YY-NNNNN']
hint: Identifica ESTA grabación. Cada versión tiene el suyo.
- { name: entidad, label: Entidad de gestión, widget: string, required: false }
- { name: numero, label: Nº de registro, widget: string, required: false }
- { name: editorial, label: Editorial musical, widget: string, required: false }
- name: reparto
label: Reparto de autoría
widget: list
required: false
label_singular: Parte
summary: '{{nombre}} — {{porcentaje}} %'
hint: Si lo rellenas, los porcentajes tienen que sumar exactamente 100.
fields:
- { name: nombre, label: Nombre, widget: string }
- name: rol
label: Qué firma
widget: select
default: letra y musica
options: ['letra', 'musica', 'letra y musica']
- { name: porcentaje, label: Porcentaje, widget: number, value_type: float, min: 0.01, max: 100 }
- name: enlaces
label: Enlaces de escucha
widget: object
required: false
collapsed: true
fields:
- { name: spotify, label: Spotify, widget: string, required: false }
- { name: appleMusic, label: Apple Music, widget: string, required: false }
- { name: youtube, label: YouTube, widget: string, required: false }
- name: body
label: Letra
widget: markdown
required: false
hint: Los saltos de línea se respetan; cada verso en su línea.
# ----------------------------------------------------------------- taller
- name: taller
label: Taller de letras
label_singular: Capítulo
description: Los principios del oficio y una ficha de creación por estilo.
folder: src/content/taller
identifier_field: titulo
create: true
slug: '{{slug}}'
summary: '{{titulo}}'
fields:
- { name: titulo, label: Título, widget: string }
- name: tipo
label: Tipo
widget: select
default: principio
options:
- { label: 'Principio (el curso)', value: principio }
- { label: 'Ficha de estilo', value: ficha }
- { name: orden, label: Orden dentro de su bloque, widget: number, value_type: int, min: 0, default: 10 }
- { name: resumen, label: Resumen, widget: string, required: false }
- name: ficha
label: Datos del estilo
widget: object
required: false
collapsed: true
hint: Solo para las fichas de estilo; en los principios se deja vacío.
fields:
- { name: origen, label: Origen, widget: string, required: false }
- { name: compas, label: Compás, widget: string, required: false }
- { name: tempo, label: Tempo, widget: string, required: false }
- { name: metrica, label: Métrica, widget: string, required: false }
- { name: estructura, label: Estructura, widget: string, required: false }
- { name: rima, label: Rima, widget: string, required: false }
- name: temas
label: De qué se habla
widget: list
required: false
field: { name: tema, label: Tema, widget: string }
- name: rasgos
label: Rasgos de escritura
widget: list
required: false
field: { name: rasgo, label: Rasgo, widget: string }
- { name: body, label: Texto del capítulo, widget: markdown }
# ---------------------------------------------------------------- páginas
# ------------------------------------------------------------------- blog
- name: blog
label: Blog
label_singular: Entrada
description: Apuntes fechados. El cuerpo del texto es el artículo.
folder: src/content/blog
identifier_field: titulo
create: true
slug: '{{slug}}'
summary: '{{titulo}} · {{fecha}}'
fields:
- { name: titulo, label: Título, widget: string }
- { name: fecha, label: Fecha, widget: datetime, date_format: 'YYYY-MM-DD', time_format: false, picker_utc: true }
- name: resumen
label: Resumen
widget: string
required: false
hint: Una frase; es lo que se lee en el listado y en los buscadores.
- { name: imagen, label: Imagen de cabecera, widget: image, required: false }
- name: etiquetas
label: Etiquetas
widget: list
required: false
hint: Las mismas que las canciones; así el blog cruza con el catálogo.
- name: canciones
label: Temas de los que habla
widget: relation
collection: canciones
value_field: '{{slug}}'
display_fields: [titulo]
search_fields: [titulo]
multiple: true
required: false
- name: borrador
label: Borrador
widget: boolean
default: false
required: false
hint: Mientras esté marcado no aparece en la web.
- name: body
label: Texto
widget: markdown
- name: paginas
label: Páginas
label_singular: Página
description: Textos sueltos, como la biografía.
folder: src/content/paginas
identifier_field: titulo
create: true
slug: '{{slug}}'
summary: '{{titulo}}'
fields:
- { name: titulo, label: Título, widget: string }
- { name: descripcion, label: Descripción, widget: string, required: false }
- { name: body, label: Texto, widget: markdown }

Powered by TurnKey Linux.