Présentation de grilles d'images dans les publications

Si vous avez de nombreuses images dans une publication Discourse, vous pouvez désormais les organiser automatiquement en une jolie grille. Il vous suffit de les encapsuler entre les balises [grid] ... [/grid], et les images seront soigneusement disposées. Il s’agit d’une fonctionnalité de base depuis ce commit, activée sur toutes les instances Discourse.

Voici un exemple en action :

Cette fonctionnalité est similaire à quelques composants de thème (Masonry Image Gallery, Tiles Image Gallery). La principale différence est que l’agencement des images dans la grille s’alignera en haut et en bas de l’élément. Quelques notes techniques supplémentaires :

  • sur mobile, la grille est par défaut à 2 colonnes, sur ordinateur à 3
  • s’il y a exactement 4 éléments dans la grille, les images seront disposées en 2 colonnes
  • des éléments autres que des images peuvent également être utilisés (comme des vidéos), mais les résultats ne seront pas parfaitement alignés
  • les éléments de la grille sont disposés de manière à ce que les hauteurs des colonnes soient aussi proches que possible les unes des autres, par conséquent, l’ordre des images n’est pas toujours conservé

L’activation ou la désactivation de la grille peut également être effectuée en cliquant sur une petite icône de bascule à côté de la première image d’un groupe d’images dans l’aperçu du compositeur :

Les images utilisées dans cette publication proviennent de unsplash.com

81 « J'aime »

très cool. J’adore ça. Merci @pmusaraj :slight_smile:

6 « J'aime »

Nous utilisons déjà Masonry Image Gallery ; cette nouvelle fonctionnalité est-elle compatible, ou les grilles existantes disparaîtront-elles ?

6 « J'aime »

Bonne question. Cette nouvelle fonctionnalité principale n’est pas incompatible avec le composant de thème Masonry Image Gallery, c’est-à-dire que les deux ne peuvent pas fonctionner en même temps.

Si vous souhaitez migrer des publications de l’approche Masonry gallery vers la nouvelle approche principale, vous devez exécuter un script qui met à jour le contenu raw des publications de

<div>

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

</div>

à

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

Et ensuite, refondre ces publications.

6 « J'aime »

Génial ! C’est une grande amélioration, qui rend les images encore plus belles dans les publications.

Je suppose que cela n’a aucun impact sur ce qui est choisi comme image principale pour les miniatures ?

6 « J'aime »

Exact, cela ne devrait pas avoir d’impact. Je crois que la première image trouvée dans le message est choisie comme miniature (en excluant les avatars, les emojis, etc.). De plus, je ne vois pas de scénario où la première image téléchargée ne serait pas la première image de la grille (le réordonnancement ne peut se produire que pour les images ultérieures dans la liste).

6 « J'aime »

J’ai une importation où les images ne sont que des URL vers un bucket S3 comme :

[grid]

https://urlsite/pic.jpg

https://urlsite/pic.jpg

[/grid]

Mais cela affiche juste [grid] puis les images et ensuite [/grid].

Je suppose que cela ne fonctionne qu’une fois que ces URL sont téléchargées et transformées en images normales ?

7 « J'aime »

Hmm, oui, dans le compositeur, cela fonctionne actuellement uniquement avec les téléchargements, trop. (Autrement dit, coller une URL vers une image et l’encapsuler dans des balises [grid] ne fonctionne pas non plus dans le compositeur.)

8 « J'aime »

Cool. Heureusement que je n’ai pas encore ajouté ce code au script d’importation. :slight_smile:

5 « J'aime »

C’est une excellente fonctionnalité, merci.

La grille fonctionnera-t-elle avec les pages publiées ?

1 « J'aime »

Malheureusement non, cela ne fonctionne pas avec les pages publiées. Les fonctionnalités similaires de publication pilotées par JavaScript ne fonctionnent pas non plus avec les pages publiées (lightboxes, sondages, table des matières).

3 « J'aime »

Serait-il possible de fournir des instructions pour cela ?

1 « J'aime »

Salut bart :wave:

Cela devrait fonctionner. Évidemment, faites une sauvegarde et recherchez attentivement tout résultat indésirable dans les publications de maçonnerie précédentes… :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>)/m, '[grid]\1[/grid]'))
    p.rebake!
end
7 « J'aime »

Merci, ça a l’air super :slightly_smiling_face:

J’utilise aussi le composant Masonry Image Gallery

Screenshot 2023-06-22 at 10.38.14

Avec le réglage auto activé… Cela ne contient pas le <div> data-masonry-gallery</div> dans le brut, donc le script ne fonctionnera pas je pense. Mais dans ce cas, il n’y a pas de conflit entre eux.


Y a-t-il des projets pour rendre les grilles automatiques ? Si cela se produit, je pourrai simplement rebaker les messages et conserver la mise en page en grille. D’ici là, je pense que je peux cacher le bouton de grille et utiliser le composant de thème en toute sécurité.

4 « J'aime »

Quelqu’un chez CDCK a-t-il une influence auprès des développeurs de Chrome ? Prise en charge du Masonry CSS pour Grid ?

Le Masonry devrait déjà être une chose CSS. C’est l’une des rares mises en page qui vous permet de respecter différents rapports d’aspect de collections d’images (ou de tout contenu d’élément) de manière agréable.

C’est tellement inutile et absurde de faire fonctionner cela en javascript partout…

(et comme vous le savez, c’est déjà possible sur Firefox (derrière un drapeau) et c’est dans la Technical Preview pour Safari maintenant : "masonry" | Can I use... Support tables for HTML5, CSS3, etc)

au fait, tout le monde, s’il vous plaît :star: ce problème :
https://bugs.chromium.org/p/chromium/issues/detail?id=1076027&q=masonry&can=2

:drum: Prise en charge du Masonry CSS maintenant pour Chrome et Edge ! :drum:

4 « J'aime »

Pas que je sache.

Je suis ravi que Safari prenne en charge le masonry, ils ont de meilleurs antécédents en matière de passage des fonctionnalités de la brouillon –> expérimentale –> entièrement prise en charge. Le support masonry de Firefox est derrière un drapeau depuis plus de 2 ans maintenant. Le support de Safari sera probablement le principal moteur pour que Chrome suive.

Fait !

4 « J'aime »

Oui, mais pas sans balises [grid]. Convertir automatiquement des images en grille sans balises violerait les spécifications CommonMark, nous préférons de loin éviter cela. (Dans ma première ébauche interne de cette fonctionnalité, j’avais commencé avec une grille automatique.)

Au lieu de cela, ce à quoi j’ai pensé comme prochaine étape est que nous pourrions ajouter automatiquement les wrappers [grid] aux téléchargements de plusieurs images, probablement 3 ou plus. Ce serait particulièrement utile pour les téléchargements mobiles, ajouter des balises manuellement sur mobile est maladroit et il y a de fortes chances que si vous téléchargez 3 images ou plus à la fois depuis votre téléphone, ce soient des photos et des candidats raisonnables pour une mise en page en grille.

Nous n’avons pas encore de projets sur la date à laquelle nous allons ajouter cela, mais c’est certainement quelque chose que nous aimerions faire.

9 « J'aime »

Il devrait cependant être possible de générer le HTML statique à partir du JavaScript et de publier le DOM « cuit » pour activer un certain nombre de fonctionnalités utiles telles que cette grille et la table des matières.

1 « J'aime »

Le HTML rendu seul ne suffit pas. La grille, la table des matières et des fonctionnalités similaires nécessitent également le JS qui interagit avec le HTML pour créer cette fonctionnalité. Et ce JS réside dans l’application Ember, il ne peut pas être facilement extrait pour les pages publiées non-Ember.

2 « J'aime »

J’ai juste joué avec ça hier et on m’a recommandé de partager mes commentaires et réflexions ici sur ce fil de discussion…

  • J’aime le fait que ce soit « automatique » dans le sens où il définit une grille lui-même.
  • Ce pourrait être une fonctionnalité intéressante d’ordonner les images sans avoir besoin de copier/coller les images dans la liste - peut-être juste en ajoutant des numéros au début de chaque image ?
  • J’aime le fait que vous puissiez facilement désactiver la grille dans l’aperçu, mais pour la réactiver, vous devez rajouter le code. Cela semble être un domaine à améliorer pour que l’icône de la grille apparaisse lorsque vous avez ajouté plus d’une image, afin de pouvoir l’activer/désactiver selon les besoins.
  • Une dernière fonctionnalité possible pour l’avenir serait la possibilité de choisir une image particulière à « mettre en évidence » ou à présenter dans la grille afin qu’elle apparaisse plus grande que les autres ou qu’elle se démarque d’une manière ou d’une autre.

Dans l’ensemble, cependant, c’est une excellente nouvelle option pour ajouter plusieurs images sans qu’elles n’envahissent une publication :slight_smile:

5 « J'aime »