SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

289 Plugins, 197 contribuciones sur SPIP-Zone, 102 visitantes en este momento

Portada del sitio > Affichage multimédia > Images > Archives Image, Galerie > ¿Retrato o paisaje?

¿Retrato o paisaje?

8 de octubre de 2005 – por Martin Gaitan

Todas las versiones de este artículo: [عربي] [Español] [français]

3 votos

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Cómo seleccionar la imágenes de un bucle DOCUMENTS en función de su orientación. Un ejemplo de las nuevas funcionalidades en SPIP 1.8

En un boucle DOCUMENTS que sirve para mostrar imágenes (por ejemplo para una galería), se prentende seleccionar las imágenes por su orientación.

En función de la compaginación que se busca, puede ser importante saber si la imagen que se va a indicar será vertical [1] o apaisada

Aquí van algunas soluciones que utilizan las nuevas funcionalidades de SPIP 1.8.x

La primera intuición

Se sabe que en un bucle documents, se puede acceder a las balizas #HAUTEUR [2] y #LARGEUR [3]. Eso significa que también se puede poner un criterio que limite la altura o la anchura de los DOCUMENTOS seleccionados:

<BOUCLE_doc(DOCUMENTS) {id_article} {largeur < 800}>
#LOGO_DOCUMENT
</BOUCLE_doc>

Siguiendo esa lógica, podría intentarse una comparación entre la anchura y la altura entre sí:

<BOUCLE_doc(DOCUMENTS) {id_article} {largeur < hauteur}>
#LOGO_DOCUMENT
</BOUCLE_doc>

SPIP autoriza el primer bucle. En efecto, se puede comparar cualquier columna de la base de datos con un valor constante. Sin embargo en del 2do bucle propuesto, el valor a la derecha no es una constante, sino un dato de la base. Por lo tanto este criterio va a fallar.

Una solución limitada: anidar bucles

Cuando se dice que el valor a la derecha debe ser una constante, eso quiere decir que puede ser:

  • una constante numérica (un id, un tamaño, etc...),
  • una cadena de carácteres (un título de artículo, de sección, etc...)
  • una expresión regular
  • el valor de una baliza de un bucle englobante

Efectivamente, dentro de una iteración específica de un bucle, los valores de sus balizas son constantes observadas desde los bucles anidados de nivel inferior. [4]

Entonces se puede utilizar un bucle englobante para pasar el tamaño del documento a la derecha del operador

En el bucle _doc se usa para encontrar todos los documentos de un artículo (aunque se podrían utilizar otros criterios). A continuación, el bucle _portrait gracias al criterio id_document sólo selecciona un documento y comprueba que la altura sea mayor o igual a la anchura del documento seleccionado por el bucle superior, que es exactamente el mismo.

He aquí entonces una primera solución funcional para seleccionar documentos de acuerdo a su orientación.

Desgraciadamente, un criterio frecuentemente utilizado no funcionará correctamente con este bucle: {a,b}.

Explicación:
Suponga que un artículo contiene imagenes con id 1, 2, 3, 4, 5 y 6 de la cuales 1, 3, 4 y 6 son verticales. Si quiero mostrar sólo las primeras dos fotos verticales, sería erroneo plantear

Este bucle devolvería sólo la foto 1, y perdería la foto 3, ya que el bucle superior devolvió los dos primeros resultados de todo el artículo.

Una solución más flexible: utilizar doublons

Una solución para poder utilizar el criterio {a,b} es usando doublons:

Un primer bucle marca con doublons los documentos que no se quieren motrar [5], en este caso las fotos apaisadas. El segundo bucle muestra todos los documentos excepto los que están con doublons, es decir, los que no han sido eliminados por el bucle anterior.

Una solución integral: brindar nuevos criterios

A veces es complicado código respetar el código SPIP puro. Desgraciadamente, en casos especiales incluso la segunda solución tiene algunas limitaciones.

He aquí una solución se vale de la extensibilidad en la versión 1.8 de SPIP, para añadir tres nuevos criterios de bucles. Como es código php puro, no están obligados a comprenderlo para utilizarlo.

Los criterios {portrait} y {paysage} estarán entonces disponibles. Por ejemplo:

Es necesario colocar este código en mes_fonctions.php3.

Atención, los dos criterios utilizan desigualdades estrictas para seleccionar las imágenes. Por ello, las imágenes cuadradas: Hauteur = Largeur no se seleccionarán por estos dos criterios. Esta es la razón por la que se añade también el criterio {carre} que, obviamente, devuelve las imágenes cuadradas.

Les dejo aquí algunas explicaciones para los que se interesan por el código. Las tres funciones hacen esencialmente lo mismo:

  1. Las dos primeras líneas recuperan el bucle en el cual se encuentra el critero y el nombre de la tabla de la base en cuestión.
  1. Se comprueba a continuación que el criterio no esté invertido (por la señal»!"); y en tal caso, se utiliza el criterio de comparación opuesto.
  1. Se añade finalmente una nueva condición a la petición que se hará a la base. Esta condición compara las columnas hauteur y largeur de la tabla en cuestión.

P.-S.


Traducción por Martín Gaitán.

Notas

[1en francés, «portrait», retrato

[2Alto

[3Largo

[4El «parser» de SPIP analiza los bucles desde «afuera hacia adentro

[5notar que el criterio es inverso al planteado antes

Dernière modification de cette page le 28 de octubre de 2017

Volver arriba

Comentar este artículo

¿Quién es usted?
  • [Conectarse]

Para mostrar su avatar con su mensaje, guárdelo en gravatar.com (gratuit et indolore) y no olvide indicar su dirección de correo electrónico aquí.

Añada aquí su comentario Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Añadir un documento

Volver arriba

Hablando de eso...

  • (fr) Formidable, le générateur de formulaires

    23 janvier 2012 – 2446 commentaires

    Un générateur de formulaires facilement configurable pour les non-informaticiens et facilement extensible pour les développeurs. Introduction L’objectif était de créer un plugin permettant de générer des formulaires. Historiquement, 2 plugins (...)

  • (fr) ORR v2

    21 mai 2013 – 106 commentaires

    ORR, le plugin d’Organisation des Réservations et des Ressources passe en version 2, avec quelques nouveautés attendues. Je ne reprendrai pas les explications données dans la version 1. Les nouveautés : 1. Gestion des autorisations Le principe (...)

  • (fr) Visualiser un PDF dans un article

    13 juin – commentaires

    SoyezCréateurs utilise un modèle pour afficher un PDF dans le corps d’un article Un peu d’histoire Avant, les navigateurs n’incluaient pas de lecteur PDF nativement ce qui avait conduit à la création du plugin Lecteur pdf javascript pdf.js. Mais, (...)

  • (fr) Aveline v2

    9 novembre 2012 – 97 commentaires

    Aveline est une collection de noisettes hautement paramétrables, compatibles avec les thèmes Z et à inclure dans vos pages avec le noiZetier. Compatibilité Cette version 2 du plugin Aveline s’utilise, sous SPIP 3, avec la version 2 du noizetier, (...)

  • (fr) Speedsyndic pour SPIP 2 et SPIP 3

    11 octobre 2010 – 32 commentaires

    Ce plugin est une version compatible spip 2.0.x / 2.1 / 3.1 du plugin Speedsyndic Note : Une bonne partie du texte ci-dessous a été pompé de cet article, expliquant la version précédente du plugin. je n’ai fait qu’adapter le code pour spip 2, ajouter (...)