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 una página en un módulo de Drupal de forma programática

20/06/2025, by Ivan

Menu

Hay dos pasos para crear una página simple en Drupal:

Declare la ruta y sus parámetros.

Este paso incluye el título de la página, los requisitos de acceso a la página, etc.

En Drupal 7 debías implementar hook_menu().

En Drupal 8, crea un archivo .routing.yml en el directorio del módulo principal.

Escribe el código para devolver el contenido de la página.

En Drupal 7 debías escribir una función callback para la página definida en hook_menu().

En Drupal 8, el callback de la página debe ser un método de clase o un servicio registrado. Puede variar según diferentes condiciones (HTTP o HTTPS, encabezados de contenido, etc.), pero esto está fuera del alcance de esta introducción.

Resumen

Siguiendo el ejemplo en esta página, podrás crear una página simple en tu módulo personalizado sin conocer demasiado los detalles internos de Drupal. Para más información, consulta Registro de cambios sobre la nueva arquitectura de rutas y varias implementaciones en el núcleo y proyectos de ejemplo.

Archivo YAML de rutas para el módulo de ejemplo

La información de rutas se almacena en example/example.routing.yml:

example.my_page:
  path: '/mypage/page'
  defaults:
    _controller: '\Drupal\example\Controller\ExampleController::myPage'
    _title: 'My first page in D8'
  requirements:
    _permission: 'access content'

example.my_page

  • Es el nombre máquina de la ruta. Por convención, los nombres máquinas de rutas deben ser module_name.sub_name. Cuando otras partes del código necesiten referirse a la ruta, usarán este nombre máquina.

path

  • Indica la URL para la página en tu sitio. Observa la barra diagonal inicial (/).

defaults

  • Describe el callback de la página y el título. @todo: ¿Dónde pueden sobrescribirse estos valores por defecto?

requirements

  • Define las condiciones bajo las cuales la página será accesible. Puedes indicar permisos, módulos habilitados u otras condiciones.

Implementación de la página para el módulo de ejemplo

La clase controlador ExampleController debe definirse en example/src/Controller/ExampleController.php:

<?php
namespace Drupal\example\Controller;

use Drupal\Core\Controller\ControllerBase;

/**
 * Provee respuestas de rutas para el módulo Example.
 */
class ExampleController extends ControllerBase {

  /**
   * Retorna una página simple.
   *
   * @return array
   *   Un array renderizable simple.
   */
  public function myPage() {
    $element = array(
      '#markup' => 'Hello, world',
    );
    return $element;
  }

}

namespace (espacio de nombres)

  • Aquí se declara el prefijo necesario para la definición completa del nombre de clase que definimos. Compara el bloque de documentación y el nombre de la clase. El autoloader sabe que para encontrar la clase \Drupal\example\Controller\ExampleController debe buscar el archivo modules/example/src/Controller/ExampleController.php.

use

  • Nos permite usar ControllerBase en lugar del nombre completo, haciendo que la línea de definición de clase sea mucho más legible.

myPage()

  • El método indicado en el archivo YAML debe ser público y debe retornar un array renderizable.

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.