Presentando cuadrículas de imágenes en publicaciones

Si tienes muchas imágenes en una publicación de Discourse, ahora puedes hacer que se organicen automáticamente en una bonita cuadrícula. Todo lo que necesitas hacer es envolverlas en etiquetas [grid] ... [/grid], y las imágenes se organizarán de forma ordenada. Esta es una característica principal a partir de este commit, habilitada en todas las instancias de Discourse.

Aquí tienes un ejemplo en acción:

Esta característica es similar a algunos componentes de temas (Masonry Image Gallery, Tiles Image Gallery). La principal diferencia es que la disposición de las imágenes en la cuadrícula se alineará tanto en la parte superior como en la inferior del elemento. Algunas notas técnicas adicionales:

  • en móvil, la cuadrícula tiene 2 columnas por defecto, en escritorio 3
  • si hay exactamente 4 elementos en la cuadrícula, las imágenes se organizarán en 2 columnas
  • también se pueden usar elementos que no sean imágenes (como vídeos), pero los resultados no se alinearán perfectamente
  • los elementos de la cuadrícula se organizan para asegurar que las alturas de las columnas sean lo más parecidas posible, por lo tanto, el orden de las imágenes no siempre se mantiene

Habilitar o deshabilitar la cuadrícula también se puede lograr haciendo clic en un pequeño icono de alternancia junto a la primera imagen en un grupo de imágenes en la vista previa del compositor:

Las imágenes utilizadas en esta publicación son de unsplash.com

81 Me gusta

Muy bueno. Me encanta. Gracias @pmusaraj :slight_smile:

6 Me gusta

Ya estamos usando Masonry Image Gallery; ¿es esta nueva función compatible o las cuadrículas existentes desaparecerán?

6 Me gusta

Buena pregunta. Esta nueva funcionalidad principal no es incompatible con el componente temático Masonry Image Gallery, es decir, ambos no pueden funcionar al mismo tiempo.

Si deseas migrar publicaciones del enfoque de galería Masonry al nuevo enfoque principal, necesitas ejecutar un script que actualice el contenido raw de las publicaciones de

<div>
![example|690x395](upload://d48GblQ7LzoqPax2TN8xyuWhzyJ.png)
![example2|690x413](upload://usFTgK3JCDlQXDaiIcAy9ZUSyt9.png)
</div>

a

[grid]
![example|690x395](upload://d48GblQ7LzoqPax2TN8xyuWhzyJ.png)
![example2|690x413](upload://usFTgK3JCDlQXDaiIcAy9ZUSyt9.png)
[/grid]

Y luego volver a hornear esas publicaciones.

6 Me gusta

¡Genial! Este es un gran avance, hace que las imágenes se vean aún mejor en las publicaciones.

Supongo que esto no afecta de ninguna manera a lo que se elige como imagen principal para las miniaturas.

6 Me gusta

Correcto, no debería afectarle. Creo que la primera imagen que se encuentra en la publicación se elige como miniatura (excluyendo avatares, emojis y similares). Además, no veo un escenario en el que la primera imagen subida no sea la primera imagen en la cuadrícula (la reorganización solo puede ocurrir para imágenes posteriores en la lista).

6 Me gusta

Tengo una importación donde las imágenes son solo URL a un bucket S3 como:

[grid]

https://urlsite/pic.jpg

https://urlsite/pic.jpg

[/grid]

Pero solo muestra [grid] luego las imágenes y luego [/grid].

Supongo que solo funciona después de que esas URL se descargan y se convierten en imágenes normales.

7 Me gusta

Hmm, sí, en el editor de texto esto actualmente solo funciona con cargas, también. (Es decir, pegar una URL a una imagen y envolverla en etiquetas [grid] tampoco funciona en el editor de texto.)

8 Me gusta

Genial. Menos mal que todavía no he añadido ese código al script de importación. :slight_smile:

5 Me gusta

Esta es una gran característica, gracias.

¿Funcionará la cuadrícula con las páginas publicadas?

1 me gusta

Lamentablemente, no, esto no funciona con páginas publicadas. Funciones similares de publicaciones impulsadas por Javascript tampoco funcionan con páginas publicadas (lightboxes, encuestas, tabla de contenido).

3 Me gusta

¿Podrías proporcionar instrucciones para esto?

1 me gusta

Hola bart :wave:

Esto debería funcionar. Obviamente, haz una copia de seguridad y busca cuidadosamente cualquier resultado no deseado en las publicaciones anteriores de masonry… :slight_smile:

posts = Post.where('raw LIKE ?', '%<div>data-masonry-gallery</div>%')

posts.each do |p|
    p.update!(raw: p.raw.gsub(/<div>data-masonry-gallery</div>(.*?)</div data-masonry-gallery>/m, '[grid]\1[/grid]'))
    p.rebake!
end
7 Me gusta

Gracias, se ve genial :slightly_smiling_face:

También uso el componente Masonry Image Gallery

Screenshot 2023-06-22 at 10.38.14

Con la configuración de activación automática. Esto no contiene el <div> data-masonry-gallery</div> en bruto, por lo que creo que el script no funcionará. Pero en este caso, no entran en conflicto entre sí.


¿Hay algún plan para hacer que las cuadrículas sean automáticas? Si esto sucede, puedo simplemente volver a hornear las publicaciones y mantener el diseño de cuadrícula. Hasta entonces, creo que puedo ocultar el botón de cuadrícula y usar el componente de tema de forma segura.

4 Me gusta

¿Alguien en CDCK tiene influencia con los desarrolladores de Chrome? ¿Soporte CSS Masonry para Grid?

Masonry ya debería ser una cosa de CSS. Es uno de los pocos diseños que te permite respetar diferentes relaciones de aspecto de colecciones de imágenes (o de hecho, cualquier contenido de elementos) de una manera agradable.

Es un desperdicio y un sinsentido tener esto ejecutándose como javascript en todas partes…

(y como saben, ya es posible en Firefox (detrás de una bandera) y ya está en la Vista Previa Técnica para Safari: "masonry" | Can I use... Support tables for HTML5, CSS3, etc)

por cierto, a todos, por favor :star: este problema:

https://bugs.chromium.org/p/chromium/issues/detail?id=1076027&q=masonry&can=2

:drum: ¡Soporte CSS Masonry ahora para Chrome y Edge! :drum:

4 Me gusta

Que yo sepa no.

Estoy emocionado de que Safari admita masonry, tienen un mejor historial de mover características de borrador –> experimental –> totalmente compatible. El soporte de masonry de Firefox ha estado detrás de una bandera durante más de 2 años. El soporte de Safari probablemente será el principal impulsor para que Chrome se mantenga al día.

¡Hecho!

4 Me gusta

Sí, pero no sin etiquetas [grid]. Convertir automáticamente imágenes en una cuadrícula sin etiquetas violaría la especificación CommonMark, preferimos evitar eso. (En mi primer borrador interno de esta función, comencé con una cuadrícula automática).

En cambio, lo que he estado pensando como el siguiente paso aquí es que podríamos agregar automáticamente los envoltorios [grid] a las cargas de múltiples imágenes, probablemente 3 o más cargas. Esto sería especialmente útil para las cargas móviles, agregar etiquetas manualmente en el móvil es torpe y es probable que si estás cargando 3 o más imágenes a la vez desde tu teléfono, sean fotos y candidatos razonables para un diseño de cuadrícula.

Todavía no tenemos planes sobre cuándo lo agregaremos, pero es algo que definitivamente nos gustaría hacer.

9 Me gusta

Sin embargo, debería ser posible generar el HTML estático a partir de JavaScript y publicar el DOM “cocinado” para habilitar una serie de funciones útiles, como esta cuadrícula y la tabla de contenido (TOC).

1 me gusta

El HTML renderizado por sí solo no es suficiente. La cuadrícula, la tabla de contenido y características similares también necesitan el JS que interactúa con el HTML para crear esa característica. Y ese JS reside en la aplicación Ember, no se puede extraer fácilmente para las páginas publicadas que no son de Ember.

2 Me gusta

Ayer estuve jugando con esto y me recomendaron que compartiera mis comentarios y pensamientos aquí en este hilo…

  • Me gusta que sea “automático” en el sentido de que establece una cuadrícula por sí mismo.
  • Podría ser una buena función adicional ordenar las imágenes sin necesidad de copiar/pegar imágenes en la lista; ¿quizás simplemente añadiendo números al principio de cada imagen?
  • Me gusta que puedas desactivar fácilmente la cuadrícula en la vista previa, pero para que vuelva a aparecer, necesitas volver a añadir el código. Parece un área para mejorar la experiencia, tener el icono de la cuadrícula que aparezca cuando hayas añadido más de una imagen para poder activarla/desactivarla según sea necesario.
  • Una última posible función futura sería la capacidad de elegir una imagen en particular para “resaltar” o destacar dentro de la cuadrícula para que aparezca más grande que otras o destaque de alguna manera.

En general, sin embargo, es una gran nueva opción para añadir varias imágenes sin que las imágenes se apoderen de una publicación :slight_smile:

5 Me gusta