Twig es un motor de plantillas para PHP que se utiliza en phpMyFAQ para separar la lógica de la presentación. Esto permite que el código sea más limpio y fácil de mantener. Veamos cómo funciona Twig en phpMyFAQ y pongamos un ejemplo práctico.
Estructura de Twig
- Twig utiliza una sintaxis de plantillas que permite incluir variables, bucles, condiciones y más.
- Las plantillas de Twig tienen la extensión
.twg
y se encuentran en la carpeta de plantillas de tu tema.
Variables
- Puedes acceder a variables pasadas desde el controlador de PHP a la plantilla Twig. Por ejemplo, si tienes una variable
$categories
en PHP, puedes acceder a ella en Twig como{{ categories }}
.
Condicionales
- Twig permite usar condicionales para mostrar contenido basado en ciertas condiciones. Por ejemplo:
{% if categories %} <p>Hay categorías disponibles.p> {% else %} <p>No hay categorías.p> {% endif %}
Bucles
- Puedes iterar sobre arrays o colecciones usando bucles. Por ejemplo:
{% for category in categories %} <h2>{{ category.name }}h2> {% endfor %}
Filtros
- Twig ofrece filtros para modificar la salida de las variables. Por ejemplo,
{{ variable|upper }}
convierte el texto a mayúsculas.
Funciones
- Puedes usar funciones integradas de Twig para tareas comunes, como
dump()
para depurar variables.
Ejemplo práctico
Imaginemos que quieres mostrar una lista de categorías en la página de inicio de phpMyFAQ. Aquí tienes un ejemplo de cómo se vería el código en PHP y en Twig.
Código PHP (Controlador)
// Supongamos que este es el controlador que carga las categorías
$categories = [
['name' => 'Categoría 1', 'url' => 'categoria1.php'],
['name' => 'Categoría 2', 'url' => 'categoria2.php'],
['name' => 'Categoría 3', 'url' => 'categoria3.php'],
];
// Renderiza la plantilla Twig
echo $twig->render('startpage.twg', ['categories' => $categories]);
Código Twig (startpage.twg)
{% if categories %}
<div class="row">
{% for category in categories %}
<div class="col">
<h2>{{ category.name }}</h2>
<a href="{{ category.url }}">Ir a la categoría</a>
</div>
{% endfor %}
</div>
{% else %}
<p>No hay categorías disponibles.</p>
{% endif %}
Explicación del ejemplo
- PHP: Se define un array de categorías y se pasa a la plantilla Twig.
- Twig: Se verifica si hay categorías. Si las hay, se itera sobre cada categoría y se muestra su nombre y un enlace. Si no hay categorías, se muestra un mensaje alternativo.
Conclusión
Twig facilita la creación de plantillas limpias y organizadas en phpMyFAQ. Al separar la lógica de la presentación, puedes mantener tu código más ordenado y fácil de modificar.