TextpatternMania

Dale ritmo a tus listados con txp:If_different

Quizá por tener una definición tan poco atractiva <txp:if_different/> sea una de esas etiquetas que la gente no acostrumbra a emplear. Yo la descubrí cuando Pedro Palazón (uno de los desarrolladores de Textpattern) anunció en su blog la salida de la versión 4.0.4 y llamaba la atención sobre los nuevos condicionales. No sé si se refería a txp:if_different , pero el caso es que me dió por mirar todas las etiquetas "txp:If_..." y esta llamó mi atención.

Cuando uno lee la definición de <txp:if_different/> en Textbook recuerda un poco a aquello de los Hermanos Marx de "la parte contratante de la primera parte es igual a la parte cotratante de la segunda parte". Literamente dice así: Textpattern will execute the contained statement when the value of the contained statement differs from the preceding value for the contained statement., que traducido libremente al cristiano sería algo así como "Si listando lo que sea el valor de lo que contiene if_different es distinto de la vez anterior, se pinta el valor, si es igual, se ignora".

Lo de "listando" lo he puesto de mi cosecha porque es el uso más útil que le he encontrado. Veamos un ejemplo:

Tenemos un flamante blog y queremos hacer una página de archivo (sí, de esas que nadie mira nunca) con el histórico de posts. Podemos listar todos los post por orden cronológico, indicando la fecha de publicación, por ejemplo así:

<ul><txp:article_custom sor="Posted" form="archivados" /></ul>

Donde el formulario "archivados" podría ser algo así:

<li><txp:posted format="%B %Y" /><br/><txp:permlink><txp:title /></li>

Suponiendo que publicamos 2 post por mes esto nos devolvería una lista así:

<ul>
<li>Marzo 2007<br/>enlace al artículo 6</li>
<li>Marzo 2007<br/>enlace al artículo 5</li>
<li>Febrero 2007<br/>enlace al artículo 4</li>
<li>Febrero 2007<br/>enlace al artículo 3</li>
<li>Enero 2007<br/>enlace al artículo 2</li>
<li>Enero 2007<br/>enlace al artículo 1</li>
...
</ul>

Feito ¿no? Podemos mejorar mucho la presentación de esta lista dándole un poco de ritmo visual empleando txp:if_different para que sólo muestre la fecha cuando se produzca un cambio de mes y/ o año.

Ya que vamos a agruparlos por fechas, aprovecho y usaré una estructura HTML de lista de definiciones <dl><dt><dd> en lugar de una lista desordenada <ul><li>, para que la información quede más estructurada (y para poder decorar más fácilmente la cosa desde CSS) pero a los efectos de uso de if_different esto es irrelevante.

<dl><txp:article_custom sort="Posted" form="archivados" /></dl>

Nuevo formulario "archivados":

<txp:if_different>
<dt><txp:posted format="%B %Y" /></dt>
</txp:if_different>
<dd><txp:permlink><txp:title /></dd>

Esto nos devolvería una lista así:

<dl>
<dt>Marzo 2007</dt>
<dd>enlace al artículo 6</dd>
<dd>enlace al artículo 5</dd>
<dt>Febrero 2007</dt>
<dd>enlace al artículo 4</dd>
<dd>enlace al artículo 3</dd>
<dt>Enero 2007</dt>
<dd>enlace al artículo 4</dd>
<dd>enlace al artículo 3</dd>
...
</dl>

Además de este caso, imagina qué otros usos puedes darle apoyándote en el condicional <txp:else /> para pintar una cosa u otra en función de que se repitan o no elementos en un listado (listado de cualquier cosa: artículos, imágenes, enlaces...).

Pues nada, ahora que ya sabes cómo hacerlo ¡Dale ritmo a tu Textpattern con <txp:if_different />!

Comentarios
1 Juanjo Navarro
7 marzo 2007, 02:15

Estupendo, este artículo me ha venido perfecto.

Conocía el uso del if_different y precisamente hoy he hecho una de estas páginas de archivo para más que código (que recién lo he migrado), pero no se me había ocurrido utilizar la estructura dl para esto y había tenido que hacer una chapucilla con ul.

Por cierto, el código está ligeramente mal (no está bien cerrado).

Un saludo.


2 Jorge Hernández
7 marzo 2007, 11:09

Enmendado. Gracias Juanjo. La verdad es que las listas de definiciones son una de esas etiquetas HTML que no se sabe bién por qué casi nadie usa y dan mucho juego.
Puedes ver un ejemplo de aplicación aquí: http://www.tocomocho.net/lista-de-definiciones-esa-gran-desconocida y , en el mismo blog, todos los listados de la columna derecha estan montados con DLs.


3 Arturo Rey
7 marzo 2007, 18:48

Interesante artículo, gracias :D, voy tomando nota, ya que soy un novatín :D


Nombre
email El email no se mostrará en la página.
http://
Mensaje
  Ayuda