logo

Extra Block Types (EBT) - Nueva experiencia con Layout Builder❗

Extra Block Types (EBT): tipos de bloques con estilo y personalizables: Presentaciones de diapositivas, Pestañas, Tarjetas, Acordeones y muchos más. Configuraciones integradas para fondo, DOM Box y plugins de JavaScript. Experimenta hoy el futuro de la construcción de diseños.

Módulos de demostración EBT Descargar módulos EBT

❗Extra Paragraph Types (EPT) - Nueva experiencia con Paragraphs

Extra Paragraph Types (EPT): conjunto de módulos basado en párrafos de forma análoga.

Módulos de demostración EPT Descargar módulos EPT

Scroll

Creación de un tipo de contenido personalizado en Drupal 8

18/06/2025, by Ivan

Esta página es una copia de la configuración "Habilitar por defecto" en el módulo Drupal 8. Debe considerarse como una amortización.

Crear un tipo de contenido personalizado se ha vuelto bastante sencillo gracias a la nueva API de configuración que viene con Drupal 8.

Requisitos previos

  • Drupal 8.0.x instalado
  • Tener un módulo propio (el nombre del módulo utilizado en este ejemplo es foobar)

Crear un tipo de contenido personalizado

Como se mencionó en la introducción, crear un tipo de contenido personalizado se realiza creando varios archivos YAML que contienen toda la configuración necesaria. En este ejemplo crearemos el tipo de contenido Car Brand, que contendrá dos campos (por defecto): cuerpo y título.

foobar/config/install/node.type.car_brand.yml

Este archivo indica a Drupal que debe crear un nuevo tipo de contenido.

Nota: ten en cuenta que añadimos una dependencia forzada al módulo foobar. Si no añadimos esta dependencia, Drupal no eliminará el tipo de contenido cuando se desinstale nuestro módulo. Cuando el desarrollador del sitio decida que ya no necesita este módulo, no queremos que el tipo de contenido siga estando disponible.

# node.type.car_brand.yml
langcode: en
status: true
dependencies:
  enforced:
    module:
      - foobar # Este es el nombre del módulo que usamos en este ejemplo
name: 'Car Brand'
type: car_brand
description: 'Tipo de contenido que puede usarse para proporcionar información adicional sobre <em>Marcas de autos</em>'
help: ''
new_revision: false
preview_mode: 1
display_submitted: true

foobar/config/install/field.field.node.car_brand.body.yml

Este archivo añadirá el campo body a nuestro tipo de contenido.

# field.field.node.car_brand.body.yml
langcode: en
status: true
dependencies:
    config:
        - field.storage.node.body
        - node.type.car_brand
    module:
        - text
id: node.car_brand.body
field_name: body
entity_type: node
bundle: car_brand
label: Body
description: 'Información más específica sobre la marca del auto.'
required: false
translatable: true
default_value: {  }
default_value_callback: ''
settings:
    display_summary: true
field_type: text_with_summary

foobar/config/install/core.entity_view_display.node.car_brand.teaser.yml

Este archivo indica a Drupal cómo debería mostrarse el teaser de nuestro tipo de contenido personalizado.

# core.entity_view_display.node.car_brand.teaser.yml
langcode: en
status: true
dependencies:
    config:
        - core.entity_view_mode.node.teaser
        - field.field.node.car_brand.body
        - node.type.car_brand
    module:
        - text
        - user
id: node.car_brand.teaser
targetEntityType: node
bundle: car_brand
mode: teaser
content:
    body:
        label: hidden
        type: text_summary_or_trimmed
        weight: 101
        settings:
            trim_length: 600
        third_party_settings: {  }
    links:
        weight: 100
hidden: {  }

foobar/config/install/core.entity_view_display.node.car_brand.default.yml

Este archivo indica a Drupal cómo debería mostrarse el contenido de nuestro tipo personalizado por defecto.

# core.entity_view_display.node.car_brand.default.yml
langcode: en
status: true
dependencies:
    config:
        - field.field.node.car_brand.body
        - node.type.car_brand
    module:
        - text
        - user
id: node.car_brand.default
targetEntityType: node
bundle: car_brand
mode: default
content:
    body:
        label: hidden
        type: text_default
        weight: 101
        settings: {  }
        third_party_settings: {  }
    links:
        weight: 100
hidden: {  }

foobar/config/install/core.entity_form_display.node.car_brand.default.yml

Este archivo indica a Drupal cómo debe mostrarse el formulario para crear un nuevo nodo de nuestro tipo de contenido personalizado.

# core.entity_form_display.node.car_brand.default.yml
langcode: en
status: true
dependencies:
    config:
        - field.field.node.car_brand.body
        - node.type.car_brand
    module:
        - text
        - user
id: node.car_brand.default
targetEntityType: node
bundle: car_brand
mode: default
content:
    body:
        label: hidden
        type: text_textarea_with_summary
        weight: 101
        settings: {  }
        third_party_settings: {  }
    links:
        weight: 100
hidden: {  }

Habilitar el tipo de contenido personalizado

Ahora que tenemos nuestros archivos de configuración, debemos informar a Drupal sobre nuestro nuevo tipo de contenido personalizado. Esto se hace reinstalando el módulo. Si tu módulo no estaba habilitado, simplemente habilítalo. Si ya estaba habilitado, desinstálalo y vuélvelo a habilitar.
Si ahora vas a la página "Crear contenido", verás que puedes crear un nuevo nodo del tipo de contenido "Car Brand".

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.