
Auteurs : Łukasz Uznański
Traduit par : Célia - W-Seils
Dans ce rapport, Łukasz Uznański partage l'histoire derrière son idée financée par le budget communautaire et présente les premiers résultats de la nouvelle extension Content Preview.

L'idée du contenu prévisualisé côte à côte m'a toujours hantée. Je savais que d'autres plateformes CMS offraient ce type d'affichage, et c'était frustrant de voir TYPO3 l'ignorer. Pendant longtemps, je me suis dit : « Ce serait formidable d'avoir quelque chose comme ça dans TYPO3. »
Au départ, j'imaginais quelque chose de simple, comme un bouton d'édition directement sur le front-end. Puis, lors d'un événement Developer Days, j'ai discuté avec des membres de l'équipe UX. Quelqu'un m'a parlé de Sulu CMS et de sa solution.
L'équipe UX de TYPO3 travaillait depuis longtemps sur des concepts — croquis, parcours utilisateur et chartes d'interface — et était véritablement impatiente de trouver un développeur prêt à concrétiser cette vision. Voir ces idées passer du stade de brouillon à une implémentation fonctionnelle était exactement le partenariat qu'elle espérait.
Cette amélioration significative de l'expérience d'édition de pages dans le backend TYPO3 était proposée pour la feuille de route v14, mais les ressources de développement nécessaires à sa mise en œuvre manquaient. L'idée était claire et validée ; il manquait simplement du temps d'ingénierie dédié à sa mise en œuvre.
C'est à ce moment-là que je me suis dit que ce serait peut-être plus qu'un simple bouton sur le front-end, et que je pourrais mettre en œuvre une solution similaire à d'autres solutions du marché. J'ai soumis une idée de budget communautaire pour le troisième trimestre de cette année : aperçu en direct côte à côte et édition du contenu des pages , qui a été approuvée.

J'ai donc commencé mes expérimentations. Ma toute première idée a été de créer un module TYPO3 entièrement nouveau, distinct du module Page. À l'intérieur de ce module, j'ai placé deux iframes côte à côte :
Le mécanisme était simple : à partir de TYPO3, j'ai obtenu l'ID de la page actuelle, j'ai construit l'URL frontale correspondante, j'ai envoyé la requête et j'ai injecté le HTML résultant directement dans l'iframe.
Quand j'ai vu la page ainsi présentée pour la première fois, je me suis dit que ça fonctionnait vraiment. Ce n'est peut-être pas si compliqué !
L'étape suivante consistait à rendre l'aperçu interactif. Je souhaitais des boutons « Modifier » cliquables dans l'aperçu du frontend. Pour les intégrer, j'ai essayé plusieurs approches :
En ajoutant un paramètre personnalisé à la requête frontend, j'ai pu ajouter du balisage supplémentaire : de petites icônes d'édition directement liées à l'édition d'enregistrements de TYPO3. L'aperçu frontend est alors devenu utilisable.
Une fois les boutons d'édition activés, j'ai rencontré le problème de surlignage de l'élément de contenu en cours de modification . Cela nécessitait de détecter les chemins d'accès aux enregistrements et de marquer visuellement l'élément frontal correspondant.
Là, j'ai rencontré un obstacle : j'avais besoin d' une communication inter-iframe . La seule option semblait être d'utiliser postMessage, mais ça a vite dégénéré.
Je me suis dit : « Je devrais peut-être ajouter une barre de configuration dans le docheader. » Mais le module Page possédait déjà son propre docheader, et en ajouter un deuxième dans mon module basé sur iframe était source de confusion.
L'alternative était de surcharger le module Page et de contrôler son DocHeader, mais je ne voulais pas emprunter cette voie. Cela me semblait complexe et fragile.
Lors de ma discussion avec Tymoteusz Motylewski , il a confirmé mes soupçons : ce n'était pas une bonne conception. Il ne fallait pas dupliquer la navigation, et la communication entre deux iframes distincts était source de problèmes.

J'ai ensuite parlé avec Marcin Sągol et son conseil a tout changé : « Au lieu de construire un nouveau module avec deux iframes, pourquoi ne pas étendre le module Page existant et simplement placer un div à l'intérieur ? »
C'était une avancée majeure. L'intégration de l'aperçu directement dans le module Page :
Encore mieux : j'ai réalisé que je n'avais plus besoin de récupérer le code HTML du front-end séparément. Je pouvais simplement effectuer une requête avec un paramètre spécial, l'intercepter dans le middleware TYPO3 et modifier le résultat à la volée en injectant des boutons et des scripts. Cette approche était claire et efficace.
En travaillant dessus, je me suis demandé : « Que charger exactement dans l'iframe d'aperçu ? » J'ai envisagé plusieurs options :
Pour l'instant, j'ai opté pour l'option 1 , car elle laisse la porte ouverte à d'autres approches ultérieures, mais garde les choses simples.

À ce stade, j'ai travaillé en étroite collaboration avec le développeur front-end, Paweł Zieliński . Nous avons discuté de la manière de présenter les options de configuration aux éditeurs. Deux idées ont émergé :
Le menu hamburger a été retenu. Il semblait plus moderne, plus léger et évitait de dupliquer la navigation existante de TYPO3.
Le menu stocke désormais des options telles que :

Un autre problème majeur concernait la communication iframe . Nous avions besoin de messages pour :
Cependant, s'appuyer sur postMessage posait problème, car il ne fonctionne pas sur plusieurs domaines. Cela signifie qu'avec plusieurs pages racines (domaines différents), vous rencontriez des problèmes de reconnexion.
La solution est venue de notre expérience avec les guides interactifs étape par étape. Au lieu de publier des messages, nous avons injecté du JavaScript personnalisé via un intergiciel. Cela a permis une communication bidirectionnelle sécurisée entre TYPO3 et l'aperçu du frontend.
Cette approche fonctionne à la fois dans les configurations HTML standard et headless, mais présente d'autres inconvénients :
Nouvelle approche :

L'une des fonctionnalités expérimentales les plus intéressantes est la possibilité de naviguer dans TYPO3 directement depuis l'aperçu, sans utiliser l'arborescence des pages. Cette fonctionnalité est activée par défaut, mais vous pouvez la désactiver via les Paramètres.
Voici comment cela fonctionne :
Il reste encore des questions ouvertes :
Mais lorsque je l'ai montré à Rachel Foucard , elle m'a dit que mon approche était bonne et que ce type de navigation permettrait aux éditeurs de contourner entièrement l'arborescence des pages pendant leur travail, ajoutant ainsi de la valeur pour les utilisateurs finaux.
Le projet a commencé modestement, mais il a pris une ampleur considérable. J'ai même créé une nouvelle organisation, T3-UX, pour le soutenir. L'extension s'appelle désormais Aperçu de contenu (content_preview) , car ce nom décrit parfaitement l'idée.
Actuellement, il existe deux approches de travail pour l'aperçu du contenu, que vous pouvez changer en modifiant l'indicateur de fonctionnalité :
Les deux sont utilisables, et présentent chacun des avantages et des inconvénients. Le choix de la voie à suivre nécessitera l'avis de la communauté TYPO3.
Le véritable défi à relever dans l'extension est de savoir comment la faire fonctionner pour la majorité des cas d'utilisation, car le frontend peut différer d'une implémentation à l'autre.
Il ne s'agit que d'une première version, et bien qu'elle soit déjà utile, de nombreuses possibilités d'amélioration existent pour en optimiser les bénéfices. L'aperçu du contenu est disponible en tant qu'extension publique, et nous devons l'améliorer ensemble, en tant que communauté. Voici quelques pistes pour l'avenir :
Avec le recul, ce projet a commencé par une simple idée : « Mettons des boutons d'édition sur le frontend. » Mais petit à petit, au fil des expérimentations, des erreurs et des solutions plus efficaces, il a évolué vers quelque chose de bien plus ambitieux.
Nous avons maintenant un aperçu du contenu :
Il ne s’agit pas seulement de technologie : il s’agit de rendre TYPO3 plus convivial pour l’éditeur, plus moderne et plus compétitif.
L'histoire n'est pas terminée. Les prochaines étapes dépendent de la communauté TYPO3. Notre objectif premier est l'adoption par la communauté. Plus les éditeurs et les intégrateurs utiliseront Content Preview, plus nous recevrons de retours et plus vite cette fonctionnalité deviendra standard.
Nous vous encourageons à expérimenter l'extension, à donner votre avis et à signaler tout problème.
Découvrez l'aperçu du contenu sur GitHub !