Ir al contenido

Loops con php estático para simular diferentes comportamientos dinámicos.

En algunos proyectos en los que he trabajado no me ha sido posible instalar el entorno que existe en producción y he tenido que trabajar en estático intententado simular comportamiento dinámicos preveyendo todas las posibles casuísticas.

Pongamos un ejemplo

Pongamos por caso un listado de artículos (titular, texto, botón).

<article>
    <h2>Titular del artículo</h2>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.</p>
    <p class="boton"><a href="#">Seguir leyendo</a></p>
</article>

Esta estructura puede repetirse en una página o diferentes secciones de una web con leves diferencias en cuanto a la apariencia o el contenido. Es posible que la longitud de los titulares varie, o que algunos elementos no se muestren.

Primero intentemos simular un listado de forma estática sin tener que duplicar código, para poder hacer cambios en bloque de manera más sencilla.

Repetir un include

Para simular un listado de noticias o productos, podemos crear un archivo y repetirlo n veces, solo tenemos que crear un archivo noticia.php y lo repetiremos las veces necesarias.

<?php for($i = 0; $i < 4; $i++) { ?>
    <p>Repítene 4 veces</p>
<?php } ?>

En este caso repetimos la noticia 4 veces

Versiones de un elemento

El siguiente código muestra diferentes versiones de un titular dependiendo de su posición en el listado. El primer resultado if ($i == 0){ echo '<h1>Titular</h1>';}, mostrará solo la palabra Titular y el los siguientes loops las demás variaciones, ($i == 1) sería el segundo resultado Titular un poco más largo y así consecutivamente.

<?php 
  if ($i == 0){
    echo '<h1>Titular</h1>';
  } if ($i == 1) {
    echo '<h1>Titular un poco más largo</h1>';
  } if ($i == 2) {
    echo '<h1>Titular mucho más largo de lo habitual en un titular de un artículo.</h1>';
  }
?> 

De esta manera podemos simular comportamientos dinámicos en estático y hacer las modificaciones sobre un solo artículo, simplificando bastante el trabajo.

Demo

Tengo un sencillo framework donde empleo estas técnicas. Actualmente publicado en GitHub