Crear una página en Drupal 8 y maquetar en un template

Es muy fácil crear una página en drupal 8, pero lo interesante es poder maquetarla a nuestro antojo, en este artículo desarrollare una página con la base de la metodología MVC que drupal 8 a implantado en su última versión.

Para desarrollar una página en drupal 8 tenemos que seguir una serie de pasos, los cuales os voy a resumir en este artículo. Pero primero de todo tendremos que crear un módulo en drupal 8, pinchar en el enlace si no sabéis como hacerlo.

Vamos a crear una página en drupal 8, esto significa que vamos a utilizar MVC, creando un controlador y una vista en un template, os indico los siguientes pasos.

Definir un controlador para poder crear una página en drupal 8

Para crear nuestra página tenemos que definir un controlador en nuestro módulo, esto lo hacemos en src/Controller. Aquí crearemos una clase que extienda de ControllerBase, os dejo el código aquí.

Con esto tenemos nuestro controlador definido con dos páginas que mostraran el texto indicado. Ahora vamos a crear nuestras rutas, para ello nos dirigimos a nuestro archivo mi_modulo.routing.yml si ya lo tenemos creado, sin no es así, habrá que crearlo en la raiz de nuestro módulo.

Crear una página en Drupal 8 y definir las rutas

Para definir rutas en drupal 8 tendremos que crear nuestro archivo mi_modulo.routing.yml, vamos a ello.

En las rutas definimos entre otras cosas la url y el nombre del controlador con la función especifica “MiModuloController::pagina_1”

Pues con esto ya tendríamos las páginas creadas… pero esto tampoco sirve de mucho, no?

Maquetar páginas en Drupal 8 con un template twig

Lo mas importante de poder crear páginas en drupal 8 es poder maquetarlas enviando nuestras variables desde el controlador hasta nuestro template. Para poder hacer esto tendremos que definir un theme en nuestro modulo. Para ello vamos ha usar el hook_theme en nuestro archivo mi_modulo.module, os dejo el código.

Aquí vamos a definir los theme de nuestro módulo, le ponemos un nombre paqina_1, definimos las variables y le decimos que template vamos a usar sin el .html.twig.

Siguiente paso, crear nuestro archivo twig, para ello creaeremos en nuestro módulo una carpeta llamada templates donde incluiremos todos nuestros archivos. Vamos a crear nuestros dos archivos, os pongo de ejemplo uno y vosotros creáis el otro.

Si no habéis entendido nada de este archivo .twig os sugiero que le echéis un vistazo a la documentación oficial de este fantástico motor de plantillas.

Ya tenemos nuestra ruta y nuestro template, volvemos a nuestro controlador para controlar el tema, jajaja. En nuestro controlador damos valor a nuestros datos accediendo al modelo y enviandolos a las vistas, vamos a cambiar nuestro código.

En este controlador he accedido a la base de datos con Drupal::entityQuery() y he enviado los datos a la plantilla con la que he creado una tabla haciendo un bucle for en twig.

Este código es de ejemplo, está claro que tenéis que crear vuestro propio controlador y mandar vuestras variables, espero haya sido un artículo claro y no os haya liado mucho en esta parte final, la intención es intentar profundizar un poco en drupal 8 y no quedarnos con los típicos artículos que son tan básicos que se quedan cortos.

 

About ignacio Farré

Técnico en programación web, amigo de MVC y experto en Drupal, Symfony, Prestashop y bootstrap.

Check Also

Como crear formulario en drupal 8

Cómo crear un formulario en drupal 8 e insertarlo en un bloque o una página

En este artículo os voy a enseñar como crear un formulario en drupal 8 para …

programar un bloque con drupal

Crear un bloque en drupal 8 y maquetar en un theme

Os voy a mostrar como crear un bloque en drupal 8 y lo mas importante, …

Theme_preprocess_hook

Acceder a los datos del usuario en drupal 8 y a su imagen – Clases File, Node y User

Acceder a los datos del usuario en drupal 8 es muy fácil, en este artículo …

  • Pingback: Cómo crear un formulario en drupal 8 e insertarlo en un bloque()

  • Brian Vanegas Parra

    Buen dia, puedes ser un poco mas explicito en el controller, al consultar la base de datos mediante ::entityQuery(), he leido acerca de éste, pero no lo he comprendido muy bien. el consulta a una tabla que creaste previamente? podrias darnos detalles de la tabla? Gracias, tus tutoriales me han servido de mucho, creeme que antes de preguntarte he buscado bastante información, pero aqui es la unica parte donde lo explican mas real, jamas el famoso hello world!

    • http://ignaciofarre.com ignacio farre fuentes

      Hola Brian, gracias por comentar. El tema de las consultas es complejo, quizás haga un post nuevo.
      Te explico
      $query = Drupal::entityQuery(‘node’) //el Tipo puede ser user, node, term o …
      ->condition(‘type’, ‘gasto’) // El tipo de nodo, esto se crea desde el administración
      ->condition(‘field_gasto_fecha’, $primerDiaDeEsteMes, ‘>=’) //Aquí las condiciones a los fields que hayas creado.
      ->execute();//ejecutamos.
      Siento no ser mas extenso, intentaré hacer un post completa para realizar consultas.
      Saludos

  • http://www.ocrend.com Prinick

    No me muestra el template. Saludos