Bonjour,
Je me permets de poster un message sur le forum car je dois créer un site web pour un photographe et je suis confronté à plusieurs problèmes.
Je pense me tourner vers une solution sur-mesure pour le CMS. Donc quelque chose comme Symfony CMF ou Bolt CMS. Avec ces outils on peut paramétrer le backoffice selon ses besoins très facilement. Dans tous les cas, pas de WordPress (choix du client, et de toute façon je ne suis pas très fan de ce CMS).
Mon premier problème se trouve au niveau de la gestion des images. En effet, je ne vois pas comment je peux faire pour que mon client puisse les gérer facilement.
1ère solution :
Je mets simplement plusieurs champs Files dans le backoffice. Le souci, c’est que d’un projet à un autre, le nombre d’images va varier (donc, en théorie le nombre de champs aussi). Je ne peux donc pas vraiment partir vers cette solution. Il faudrait faire en sorte de pouvoir ajouter ou supprimer des champs Files à la volée via du JS. Je sais que cela est possible, mais je n’ai jamais testé que ça soit sous Symfony CMF ou Bolt. Je me dis également que mon client risque de trouver ça chiant de devoir uploader les images les unes après les autres.
2nd solution :
Mon client classe ses photos par dossiers (ex: « nom_du_projet », …) et numérote ses fichiers par ordre numérique (01.jpg, …). Dans le backoffice, je mets un simple champ Texte dans lequel mon client devra renseigner le nom du dossier en lien avec le projet qu’il est entrain d’éditer. En clair si le projet se nomme « Shooting Dupont », le nom du dossier à mettre dans le champ texte sera « shooting_dupont ». Ensuite, vous l’aurez compris, je fais en sorte de récupérer la valeur de ce champ et je parcours le contenu du dossier en PHP. Simple à réaliser et simple à utiliser pour mon client. Cependant, cette solution ne risque-t-elle pas de ralentir le chargement des pages ?
3ième solution :
Je mets un simple champ Textarea dans le backoffice dans lequel mon client devra mettre du code JSON. L’avantage, c’est que je pourrais en plus mettre d’autres informations comme la classe CSS spécifique à appliquer par images. C’est le grand avantage de cette solution. Cependant, je me demande si cette solution ne va pas effrayer mon client ? Un petit exemple :
{
"images" : [
["01.jpg", "col-6"],
["02.jpg", "col-12"]
]
}
Voilà ce à quoi j’ai pensé. Qu’en dites-vous ?
Pour finir, dernière question : dans cet exemple (https://cdn.dribbble.com/users/1236546/screenshots/13991992/media/348f6e58f3c1c91fb8beffa497fe9568.jpg), comment feriez-vous pour gérer en backoffice la disposition des différentes images ? Je me doute bien que la taille et le positionnement des images est géré en CSS… mais comment faire en sorte qu’un client qui n’y connait rien puisse gérer ce genre de détail très facilement sans forcément mettre les mains dans le code HTML ? La meilleure solution ne serait-elle pas d’utiliser la 3ième solution détaillée dans la question précédente ?
N’hésitez pas à me faire d’autres propositions si vous avez des idées.
Par avance, merci.
Je serais parti sur la seconde solution, avec la possibilité d'éditer les fichiers plus tard (par rapport au nom ou à la position par exemple).
Si tu as peur que ce soit long, tu peux également y ajouter le composant Symfony messenger qui permet de traiter les parties "lourdes" en arrière plan, et de notifier le client par mail (ou le biais que tu veux) une fois le traitement terminé ce qui permettra de ne pas bloquer la page du client.
Je trouve que c'est la solution la plus simple, le client n'aurait qu'à respecter une nomenclature du nom de ses fichiers (ça lui permettra aussi de les ranger de son côté).
Vois d'ailleurs également si ce n'est pas déjà le cas, et dans ce cas ce serait plutôt à toi de t'adapter à sa nomenclature pour y ajouter une logique de "tri" si cela est réalisable.
Merci pour ton retour.
Le problème que je vois avec la solution n°2 est le suivant, par exemple : si j'ai 100 visiteurs qui visitent la même page au même moment, mon code va devoir parcourir 100 fois le dossier où se trouve les photos. Pas super. Je sais que Symfony intègre un système de cache assez puissant, mais je ne sais pas s'il est compatible avec Symfony CMF (je pense que oui, mais je ne me suis jamais vraiment posé la question).
Pour ce qui est de la nomenclature, RAS, mon client me laisse m'organiser comme je veux.
Bonjour,
La solution 1 me semble la plus appropriée et surtout la plus pro vis-à-vis du client... à conditions de gérer correctement l'upload des images, il est claire que la mise en place d'un ou plusieurs champ de type File en dur n'est pas approprié pour le coup.
Pour pallier ça, tu peux mettre en place un upload en Drag & Drop (https://github.com/blueimp/jQuery-File-Upload fait très bien le job) de manière à ce que le client ait juste à balancer ses images en glisser déposer pour les uploader, comme il a déjà probablement l'habitude de le faire sur des sites comme FlickR.
Autre solution (ou altérnative), permettre l'upload d'une archive zip contenant les images de la gallerie.
Une fois reçu sur le serveur, il suffit de décompresser les images et de les mettre dans le dossier cible.
Concernant ta 2eme question sur la gestion de la disposition des images, il faudrait voir sil il existe un outil web intégrable qui permettrait de gérer la dispotion et la taille des images, ou si ça n'existe pas, le créé. Mais là ça devient compliqué... je pense que dans ce cas la solution la plus simple pour le client serait qu'il se fasse ses montages lui même avec Photoshop.
Mickaël