Contacto

informes@softwinperu.com

+(511)522-2686

Filtro personalizado con Twig en Drupal 8

Gracias a las características de Twig nosotros contamos con más escalabilidad al momento de desarrollar temas en Drupal 8. En está oportunidad vamos a crear un filtro personalizado de twig el cual podremos usarlo dentro de las plantillas twig que tengamos en nuestro tema.

Necesitamos crear un módulo personalizado y con los siguientes archivos.
 

modulo: "bitw_filter" dentro de modules/custom/
bitw_filter/bitw_filter.info.yml
bitw_filter/bitw_filter.services.yml
bitw_filter/src/TwigExtension/ChangeText.php

 

El archivo .info.yml tiene la configuración habitual

name: BITW filter
description: My first twig filter module
package: BITW
type: module
core: 8.x


El archivo .services.yml contiene lo siguiente:

services:
  bitw_filter.twig_extension:
    class: Drupal\bitw_filter\TwigExtension\ChangeText
    tags:
      - { name: twig.extension }

(Note que en class se hace referencia al archivo que se detallará enseguida)

El archivo src/TwigExtension/ChangeText.php tendrá lo siguiente:

(Leer los comentarios del siguiente código)

<?php

namespace Drupal\bitw_filter\TwigExtension;

class ChangeText extends \Twig_Extension {

  /**
   * Aquí definimos en un listado todos los filtros personalizados que necesitamos.
   */
  public function getFilters() {
    return [
      new \Twig_SimpleFilter('changetext', array($this, 'changeText')),
    ];
  }

  /**
   * Aquí tenemos el identificador de la extensión Twig
   * (Este se relaciona con el nombre que definimos en el archivo .service.yml)
   */
  public function getName() {
    return 'bitw_filter.twig_extension';
  }

  /**
   * Aquí van las funciones que harán lo que necesitemos
   * en nuestros filtros personalizados en Twig
   */
  public static function changeText($string) {
    return $string . 'CmPunk';
  }

}




Al habilitar el módulo bitw_filter debemos limpiar caché para recién poder usarlo en cualquier plantilla que tengamos en nuestro tema.

 

{{ 'Texto de prueba escrito por:' | changetext }}

 

Este módulo personalizado nos puede servir para albergar más de un filtro personalizado, en realidad todos los filtros personalizados que queramos, solamente tenemos que agregar un filtro nuevo más en la función getFilters() y su respectiva función que hará lo que le asignemos.

Añadir nuevo comentario

Texto sin formato

  • No se permiten etiquetas HTML.
  • Saltos automáticos de líneas y de párrafos.
  • Las direcciones de correos electrónicos y páginas web se convierten en enlaces automáticamente.
CAPTCHA
Esta pregunta para comprobar que eres una persona real e impedir el envío de SPAM.