Drupal Recipes (recetas)

comida
Solucionex
28
Jun 24

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.

Recetas