SPIP-Contrib

SPIP-Contrib

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

286 Plugins, 197 contribuciones sur SPIP-Zone, 233 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 13 de junio de 2012

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) Un retour d’expérience d’utilisation de Formidable

    26 octobre – commentaires

    Il s’agissait de créer un formulaire d’inscription à un évènement modérer les inscriptions dans le privé publier les inscriptions dans le public Nous avons discuté de cette présentation lors de l’apéro SPIP du 15 février 2016 à la Cantine (...)

  • (fr) Métas +

    3 décembre – 14 commentaires

    Améliorez l’indexation de vos articles dans les moteurs et leur affichage sur les réseaux sociaux grâce aux métadonnées Dublin Core, Open Graph et Twitter Card. Installation Activer le plugin dans le menu dédié. Dans le panel de configuration, (...)

  • (fr) Adaptive Images

    15 novembre 2013 – 69 commentaires

    Un plugin pour permettre aux sites responsive d’adapter automatiquement les images de la page à l’écran de consultation. Adaptive Images, que l’on pourrait traduire par Images adaptatives, désigne la pratique qui vise à adapter les taille, (...)

  • (fr) Social tags

    8 septembre 2008 – 428 commentaires

    Le plugin Social Tags permet d’ajouter des icônes de partage de liens vers les sites tels que Digg, Facebook, Delicious.... Une fois le plugin installé et activé (voir doc.), le choix des sites se fait via un menu de configuration. Insertion (...)

  • (fr) Module de Paiement Stripe

    17 octobre – commentaires

    Stripe est un prestataire de paiement externe https://stripe.com/fr qui propose une API moderne et une interface de paiement extrêmement conviviale et efficace. Ce module permet les paiements à l’acte et les paiement récurrents. Configuration (...)

SPIPeando del otro...