Extensiones de Vistas HTML

Podemos añadir ubicaciones a nuestras plantillas twig de tal forma que otro plugin pueda añadir contenido en esa ubicación. NO es herencia, no estamos machacando los datos originales, estamos añadiendo contenido extra en una ubicación determinada.

Al crear la plantilla Twig tenemos que proporcionar a dicha plantilla las ubicaciones en las que permitimos que otros programadores puedan extender y añadir contenido.

Añadir ubicaciones

Esto es un ejemplo de como crear una plantilla llamada MiPlantilla con ubicaciones. Llamamos la funcion getIncludeViews(), donde tendremos que pasarle el nombre de la propia plantilla y el nombre de la posición (la posición es un nombre que nos inventaremos).

<html>
    <head>
    {% for includeView in getIncludeViews('MiPlantilla', 'head') %}
        {% include includeView['path'] %}
    {% endfor %}
    </head>
    <body>
    {% for includeView in getIncludeViews('MiPlantilla', 'body') %}
        {% include includeView['path'] %}
    {% endfor %}
        <div id="menu">
        {% for includeView in getIncludeViews('MiPlantilla', 'menu') %}
            {% include includeView['path'] %}
        {% endfor %}
        </div>
    </body>
</html>

Podremos añadir todas ubicaciones que queramos en nuestras plantillas, para dar mejor y mayor integración con plugins de terceros.

Extender desde un plugin

Ahora desde nuestro plugin vamos a añadir contenido en la plantilla anterior. Dentro de la carpeta Extension/View debemos crear el archivo MiPlantilla_head.html.twig. Para cada ubicación que queramos extender tendremos que crear el archivo, por ejemplo: MiPlantillabody.html.twig y MiPlantillamenu.html.twig.

Además podriamos añadir una ordenación a los archivos twig. Imaginemos que varios plugins extienden y añaden contenido al mismo archivo ¿que pasa?, por defecto todos los archivos se ordenan por orden alfabético y un número 10 al final, si no hemos establecido nosotros el número. Si queremos asegurarnos que nuestra extesión se cargue antes o después solo debemos renombrar el archivo así: MiPlantilla_head_05.html.twig, MiPlantilla_body_13.html.twig y MiPlantilla_menu_09.html.twig.

Notese la nomenclatura obligatoria de los archivos: NOMBRE_PLANTILLA_UBICACION TWIG_ORDENACION.html.twig

Ahora en cualquiera de nuestros archivos twig para extender añadimos nuestro código personalizado.

MiPlantilla_head_05.html.twig

<title>Extensiones de Vistas HTML</title>
<meta name="description" content="Descripción de la página"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta name="generator" content="FacturaScripts"/>

MiPlantilla_menu_09.html.twig

<nav class="navbar navbar-expand-lg navbar-light bg-light">
  <a class="navbar-brand" href="#">Navbar</a>
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>
  <div class="collapse navbar-collapse" id="navbarNav">
    <ul class="navbar-nav">
      <li class="nav-item active">
        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Features</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Pricing</a>
      </li>
      <li class="nav-item">
        <a class="nav-link disabled">Disabled</a>
      </li>
    </ul>
  </div>
</nav>
Cookies
Usamos cookies en nuestro sitio web para brindarte la experiencia más relevante recordando tus preferencias y visitas repetidas. Al hacer clic en "Aceptar", aceptas el uso de TODAS las cookies necesarias.
Copyright (c) 2013-2025 FacturaScripts
0.37268s

Soporte