A partir de la versión 10.3, drupal incorpora la primera versión de las recetas (recipes), una funcionalidad similar a las distribuciones pero que permiten incorporar varias a una web, y que no impida su desinstalación.
En este artículo se hablará brevemente de su uso.
¿Qué se puede hacer con las recetas?
Pueden instalarse otros módulos, importar configuración de la receta o de otros módulos, crear nuevas entidades de configuración, importar contenido a la web...
Ejemplos de recetas
Crear un nuevo rol
# web/modules/custom/mymodule/recipes/test_role/recipe.yml
name: 'Rol de prueba'
description: 'Proporciona un rol de prueba.'
# La propiedad "type" sirve solamente para agrupar recetas, puede ser cualquier cadena de texto
type: 'Pruebas'
config:
# Acciones a ejecutar
actions:
user.role.patata:
# Si el rol ya existe en la web, se ignora esta acción
ensure_exists:
id: test
label: Prueba
is_admin: false
# A los roles se les puede añadir permisos directamente
grantPermissions:
- 'access content'
Crear un nuevo tipo de contenido
# web/modules/custom/mymodule/recipes/test_content_type/recipe.yml
name: 'Tipo de contenido de prueba'
description: 'Proprociona un tipo de contenido de prueba.'
type: 'Pruebas'
# Una receta puede depender de otras
recipes:
- test_role
install:
- node
config:
actions:
node.type.test:
ensure_exists:
name: 'Tipo de contenido de prueba'
type: test
new_revision: false
preview_mode: 1
display_submitted: false
# Importar toda la configuración que proporciona el módulo "node"
import:
node: '*'
Aparte, una receta puede importar contenido exportado con el módulo default_content si se encuentra en la misma carpeta que el archivo recipe.yml. Ej:
# web/modules/custom/mymodule/recipes/test_content_type/content/node/3d5848f5-f2bb-4af8-959f-12532921f11f.yml
_meta:
version: '1.0'
entity_type: node
uuid: 3d5848f5-f2bb-4af8-959f-12532921f11f
bundle: test
default_langcode: es
default:
revision_uid:
-
target_id: 1
status:
-
value: true
uid:
-
target_id: 1
title:
-
value: 'Contenido de prueba'
created:
-
value: 1719572699
promote:
-
value: true
sticky:
-
value: false
revision_translation_affected:
-
value: true
path:
-
alias: /contenido-de-prueba
langcode: es
pathauto: 1
content_translation_source:
-
value: und
content_translation_outdated:
-
value: false
Cómo importar una receta
Puede hacerse usando drush (a partir de la versión 13) con el comando "drush recipe [RUTA RECETA]". Ejemplo: "drush recipe modules/custom/mymodule/recipes/test_content_type".
Imagen de cleo stracuzza en Unsplash.