{"id":307,"date":"2020-10-07T14:49:45","date_gmt":"2020-10-07T14:49:45","guid":{"rendered":"https:\/\/cinnk.com\/index.php\/2020\/10\/07\/joomla-4-et-au-dela-architecture-et-design\/"},"modified":"2023-10-13T09:27:01","modified_gmt":"2023-10-13T09:27:01","slug":"joomla-4-et-au-dela-architecture-et-design","status":"publish","type":"post","link":"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/","title":{"rendered":"Joomla! 4 et au-del\u00e0 \u2013 architecture et design"},"content":{"rendered":"<p>Dans les deux premiers opus de cette s\u00e9rie, nous avons discut\u00e9 du <a href=\"https:\/\/cinnk.com\/index.php\/2020\/10\/07\/cinnk-talk-presentation-de-october-cms-juillet-2016\/\" target=\"_self\" title=\"Joomla! 4 et au-del\u00e0 : Public cible et message Marketing unique\" rel=\"noopener\">public cible pour Joomla! 4<\/a> et au-del\u00e0 et de <a href=\"https:\/\/cinnk.com\/index.php\/2020\/10\/07\/mise-a-jour-de-la-mise-a-jour-juillet-2016\/\" target=\"_self\" title=\"Joomla! 4 et au-del\u00e0 : une vision pour l'utilisateur final\" rel=\"noopener\">la vision de l&rsquo;utilisateur final<\/a>. Dans ce troisi\u00e8me opus, nous allons voir ce qu&rsquo;il en est du c\u00f4t\u00e9 des d\u00e9veloppeurs, d\u00e9finir une vision pour l&rsquo;architecture du code et les buts en terme de design.<img fetchpriority=\"high\" decoding=\"async\" class=\" size-full wp-image-306\" src=\"https:\/\/cinnk.com\/wp-content\/uploads\/2020\/10\/joomla-4-et-au-dela-architecture-et-design.jpg\" alt=\"joomla! 4 et au del\u00e0 architecture et design\" style=\"display: block; margin-left: auto; margin-right: auto;\" title=\"joomla! 4 et au del\u00e0 architecture et design\" width=\"800\" height=\"510\" srcset=\"https:\/\/cinnk.com\/wp-content\/uploads\/2020\/10\/joomla-4-et-au-dela-architecture-et-design.jpg 800w, https:\/\/cinnk.com\/wp-content\/uploads\/2020\/10\/joomla-4-et-au-dela-architecture-et-design-600x383.jpg 600w, https:\/\/cinnk.com\/wp-content\/uploads\/2020\/10\/joomla-4-et-au-dela-architecture-et-design-300x191.jpg 300w, https:\/\/cinnk.com\/wp-content\/uploads\/2020\/10\/joomla-4-et-au-dela-architecture-et-design-768x490.jpg 768w\" sizes=\"100vw\" \/><\/p>\n<p><!--more--><br \/>\nJoomla! 4 et au-del\u00e0 \u2013 architecture et design                Dans les deux premiers opus de cette s\u00e9rie, nous avons discut\u00e9 du public cible pour Joomla! 4 et au-del\u00e0 et de la vision de l&rsquo;utilisateur final.                             Dans ce troisi\u00e8me opus, nous allons voir ce qu&rsquo;il en est du c\u00f4t\u00e9 des d\u00e9veloppeurs, d\u00e9finir une vision pour l&rsquo;architecture du code et les buts en terme de design.<br \/>\nCet article est une traduction de l&rsquo;article&nbsp;Joomla! 4 and Beyond: architecture and design par Nicolas Dionysopoulos.<br \/>\nAccessibilit\u00e9<br \/>\nOn me dit que Joomla! a besoin d&rsquo;am\u00e9liorations au niveau de l&rsquo;accessibilit\u00e9. C&rsquo;est apparemment n\u00e9cessaire pour l&rsquo;utilisation de Joomla! dans le secteur public pour de nombreux pays. Ce n&rsquo;est pas ma sp\u00e9cialit\u00e9 donc j&rsquo;imagine que cela requiert la contribution d&rsquo;experts en accessibilit\u00e9.<br \/>\nUn framework CSS moderne<br \/>\nJoomla! est bloqu\u00e9 avec Bootstrap 2 depuis longtemps. Encore pire, ce n&rsquo;est pas seulement Bootstrap 2, c&rsquo;est une mauvaise version de Bootstrap 2. Peut-\u00eatre que cela avait du sens en 2011, mais en 2015 c&rsquo;est comme essayer d&rsquo;utiliser des messages de fum\u00e9e alors que tout le monde sait \u00e9crire. Nous avons besoin d&rsquo;un framework CSS moderne.<br \/>\nIl y a deux \u00e9coles pour cela. Une \u00e9cole qui dit que nous devrions d\u00e9velopper notre propre framework CSS. Je ne suis pas d&rsquo;accord avec cette approche car elle n\u00e9cessite des talents rares que nous avons peine \u00e0 trouver et cela ne garantit pas de visibilit\u00e9 pour le futur. Dans des mots simples, il n&rsquo;est pas bon de ne pas pouvoir garantir la long\u00e9vit\u00e9 d&rsquo;un projet.<br \/>\nL&rsquo;autre \u00e9cole est que Joomla! peut grandir \u00e0 plusieurs. Bootstrap est un bon framework, nous devrions nous coller \u00e0 lui, en nous engageant \u00e0 toujours utiliser sa derni\u00e8re version, au plus tard 6 mois apr\u00e8s la date de sortie pour \u00eatre en accord avec le cycle de d\u00e9veloppement de Joomla!. Nous ne devrions pas \u00eatre effray\u00e9s de casser b\/c en faisant les mises \u00e0 jour vers la derni\u00e8re version de Bootstrap. Je sais, j&rsquo;\u00e9tais contre cela ces 4 derni\u00e8res ann\u00e9es, mais j&rsquo;ai vu que nous restions sur une version obsol\u00e8te d&rsquo;un framework CSS.<br \/>\nJlayout pour la victoire<br \/>\n Jlayout est une bonne mani\u00e8re pour abstraire certaines complexit\u00e9s de l&rsquo;utilisation de diff\u00e9rents frameworks CSS. S&rsquo;il vous plait, gardez en t\u00eate que cela ne concerne que le contenu statique, il n&rsquo;y a pas d&rsquo;interactions Javascript qui n\u00e9cessiteraient de conna\u00eetre A, le mod\u00e8le DOM du framework et B la disponibilit\u00e9 du helper des fonctions Javascript. En r\u00e9sum\u00e9, Jlayout est un HTML abstraction layer.<br \/>\nQu&rsquo;en serait-il si nous pouvions utiliser Jlayout pour produire des abstractions Javascript&nbsp;? Je sais que certains Jlayouts de templates chargent d\u00e9j\u00e0 leur propre Javascript mais cela ne concerne que les besoins natifs de Joomla!. Si en tant que d\u00e9veloppeur tiers je souhaite afficher des boutons dynamiquement, ou modifier la couleur d&rsquo;un label, \u00e0 travers du Javascript, la seule possibilit\u00e9 que j&rsquo;ai actuellement est de faire des appels d&rsquo;Ajax en produisant une nouvelle page HTML et remplacer le contenu de la page que l&rsquo;utilisateur est en train de consulter. Cela est faux et impraticable pour plusieurs raisons&nbsp;!<br \/>\nD\u00e9veloppons une Javascript library commune, en accord avec Bootstrap. Si un d\u00e9veloppeur d\u00e9cide d&rsquo;utiliser le framework CSS XYZ il est oblig\u00e9 de produire une surcharge pour cette Javascript library&nbsp;commune. Cela permet aux d\u00e9veloppeurs tiers de supporter diff\u00e9rents templates sans une vilaine approche de chargement d&rsquo;une copie de Bootstrap (Yeah, j&rsquo;ai fait cette merde moi-m\u00eame&#8230;) ou sans devoir inventer son propre framework CSS qui n&rsquo;appara\u00eetra pas \u201ccorrectement\u201d sur un template tiers.             Supercharge de vues de template<br \/>\nUne des innovations de Joomla! 1.5, retour en 2006, \u00e9tait l&rsquo;introduction des vues de template qui s\u00e9paraient le code m\u00e9tier et le code charg\u00e9 du rendu de la page. C&rsquo;\u00e9tait g\u00e9nial&#8230;il y a neuf ans. Avons nous jet\u00e9 un \u0153il \u00e0 nos vues de templates&nbsp;? Il y a \u00e9norm\u00e9ment de code PHP ici. Les d\u00e9veloppeurs frontend ont besoin d&rsquo;avoir bien plus qu&rsquo;une connaissance superficielle du PHP pour modifier le style des \u00e9l\u00e9ments.<br \/>\nEn attendant, dans le monde PHP, Laravel est arriv\u00e9. Et il a ces Blade template stupidement simples \u00e0 comprendre. Dans le mille ! Il est puissant et il est simple pour les d\u00e9veloppeurs frontend de comprendre et de personnaliser sans entrer trop dans le PHP. Et oui, il peut \u00eatre port\u00e9 \u00e0 Joomla!, je l&rsquo;ai d\u00e9j\u00e0 fait.<br \/>\nLa syntaxe Blade nous permet de simplifier d&rsquo;avantage la vie des d\u00e9veloppeurs en ajoutant des supports de construction comme @jlayout(\u2018com_example.foo.bar\u2019, $this-&gt;items, $somethingElse)&nbsp;.Comparez \u00e7a \u00e0 l&rsquo;invocation du Jlayout typique dans le code du noyau et vous verrez ce qu&rsquo;il en est. Avec les mots de Darth Sidious&nbsp;:POUVOIR&nbsp;! LE POUVOIR ILLIMITE&nbsp;!<br \/>\nPHP 5.4 et plus r\u00e9cent<br \/>\nPHP 5.3 est mort depuis aout 2014. PHP 5.4 sera mort en aout 2015 mais au moins nous savons que tous les h\u00e9bergements mutualis\u00e9s le supportent \u2013 except\u00e9s ceux qui ne devraient pas avoir le droit de se connecter \u00e0 internet!- au moins via une option.<br \/>\nPHP5.4 nous permet d&rsquo;\u00e9crire du code l\u00e9ger avec moins de duplication en utilisant les Traits. C&rsquo;est la raison pratique sous la suggestion. Nous pourrions facilement raser 15% du code de nos composants natifs et r\u00e9duire le nombre de bugs que nous rencontrons. 2 fois gagnant.<br \/>\nMySQL (et variantes compatibles) seulement<br \/>\nJe sais que je vais r\u00e9volter les 10 personnes qui utilisent Joomla! avec un serveur SQL Microsoft et PostgreSQL. Il y a plusieurs raisons pratiques pour faire cela, comme&nbsp;:<\/p>\n<p> Optimisation des requ\u00eates. Nos requ\u00eates sont suboptimales et m\u00e8nent vers de mauvaises performances, en particulier sur les sites de grande taille. Si nous savons que le noyau est seulement suppos\u00e9 fonctionner avec MySQL nous pouvons utiliser l&rsquo;expertise de MySQL DBAs dans la communaut\u00e9 Joomla! avec de nombreuses demandes pour rendre Joomla! rapide. C&rsquo;est une des fonctionnalit\u00e9s majeures, et l&rsquo;un des principaux points marketing.<br \/>\n R\u00e9duire la barri\u00e8re d&rsquo;entr\u00e9e et d&rsquo;erreur dans le d\u00e9ploiement. Si quelqu&rsquo;un apportait une nouvelle fonctionnalit\u00e9 avec des modifications dans le sch\u00e9ma il serait suppos\u00e9 apporter ces changements dans le format MySQL, PostgreSQL et MS SQLServer. Dans 2 diff\u00e9rents emplacements pour chacun d&rsquo;entre eux. Cela met hors d&rsquo;eux les d\u00e9veloppeurs exp\u00e9riment\u00e9s avec PHP et MySQL mais cela peut permettre d&rsquo;apprendre et de tester contre PostgreSQL et MS SQL Server. Encore pire, les modifications des sch\u00e9mas PostgreSQL et MS SQL Server sont g\u00e9n\u00e9ralement fusionn\u00e9es et non test\u00e9es et les erreurs ne sont d\u00e9couvertes que longtemps apr\u00e8s leur mise \u00e0 disposition.<br \/>\n Nous n&rsquo;avons aucun utilisateur qui supporte plus de 3 technologies de serveur de base de donn\u00e9es. La preuve de cela est que l&rsquo;int\u00e9gration de PostgreSQL n&rsquo;a pas fonctionn\u00e9 pour une longue p\u00e9riode (au moins 1 an) et personne de s&rsquo;en est aper\u00e7u. M\u00eame lorsque que nous notifions des probl\u00e8mes, plusieurs mois s&rsquo;\u00e9coulent avanr que les probl\u00e8mes ne soient r\u00e9gl\u00e9s. Je ne sais toujours pas si MS SQL Server fonctionne r\u00e9ellement.<\/p>\n<p>Donc allons-y, cessons de supprimer les types de base de donn\u00e9es aditionnels. Nous pouvons laisser les drivers dans le noyau de Joomla! (Joomla! Framework?) pour les d\u00e9veloppeurs tiers et les entreprises afin qu&rsquo;ils puissent l&rsquo;utiliser. Le noyau ne pourra lui fonctionner qu&rsquo;avec MySQL.<br \/>\nPour MySQL lui-m\u00eame, puisque nous ne pouvons pas encore augmenter les pr\u00e9-requis minimums vers MySQL 5.6, nous devrons mettre des tables en plein texte afin de coller \u00e0 MySAM (et d\u00e9capiter tout cr\u00e9tin qui sugg\u00e8re de les transformer en InnoDB).             Se d\u00e9barrasser de UCM<br \/>\nUCM est \u00e0 moiti\u00e9 mort, et sera bient\u00f4t compl\u00e8tement mort, donc supprimons-le simplement. Il n&rsquo;est pas indispensable pour les Tags ou le Content Versioning. Nous en avons simplement besoin entre les tables tags et content avec un champ compl\u00e9mentaire d\u00e9not\u00e9 du type de contenu. Ensuite nous pouvons utiliser quelque chose comme une relation \u201cmorphable\u201d comme Laravel pour les faire fonctionner. Si vous lisez la documentation Laravel vous verrez que c&rsquo;est l&rsquo;utilisation dans les cas de relation morphable, apr\u00e8s tout.<br \/>\nPoint bonus&nbsp;: cela r\u00e9duit grandement le duplicate content et le d\u00e9sordre entre les tables, simplifie les requ\u00eates et acc\u00e9l\u00e8re les choses.<br \/>\nSupprimer de nombreuses extensions natives<br \/>\nPar le plan d\u00e9j\u00e0 existant. Une chose de laquelle nous n&rsquo;arrivons pas \u00e0 nous d\u00e9coller est la mise en garde de nos utilisateurs \u00e0 propos des extensions natives support\u00e9es. Je pense que la page d&rsquo;accueil de l&rsquo;Installation \u00e0 partir du web devrait contenir deux parties&nbsp;: les extensions natives support\u00e9es et une liste des extensions r\u00e9guli\u00e8rement recherch\u00e9es dans les cat\u00e9gories du JED. Cela nous permet d&rsquo;indiquer aux utilisateurs o\u00f9 ils doivent aller pour ajouter rapidement des fonctionnalit\u00e9s qui ne sont pas pr\u00e9sentes nativement dans Joomla!. Cette approche fonctionne parfaitement avec WordPress&nbsp;: la page d&rsquo;accueil permettant d&rsquo;ajouter des plugins est essentiellement une liste de plugins automatiques ou sponsoris\u00e9s.<br \/>\nEspaces de nom de partout<br \/>\nPuisque nous utilisons une version majeure, je crois que nous pouvons d\u00e9finitivement casser a\/b et proposer un code enti\u00e8rement compos\u00e9 d&rsquo;espaces de nom. Cela va \u00e9galement r\u00e9duire notre code puisqu&rsquo;il sera enfin possible d&rsquo;\u00e9tendre une classe MVC frontend \u00e0 partir d&rsquo;une classe MVC backend. Auparavant, cela n&rsquo;\u00e9tait pas possible car les deux classes utilisaient le m\u00eame nom. De plus, nous pouvons compl\u00e8tement faire dispara\u00eetre Jloader. Et utiliser \u00e0 la place Composer\u2019s PSR-4 autoloader qui est d\u00e9j\u00e0 pr\u00e9sent avec Joomla!. Cela nous enl\u00e8vera les bugs dans les extensions tierces caus\u00e9s par les classes natives qui se d\u00e9placent de libraries\/joomla vers libraries\/cms, ou les classes qui ne suivent pas le sch\u00e9ma de l&rsquo;actuel autolader.<br \/>\nLayer de r\u00e9trocompatibilit\u00e9, au moins pour 4.x<br \/>\nUne nouvelle vision du CMS sans les extensions tierces est inutile. C&rsquo;est notre m\u00e9tier en tant que d\u00e9veloppeur de faciliter la transition du code \u00e9crit pour Joomla! vers Joomla! 3. Cela peut \u00eatre fait en produisant une compatibilit\u00e9 de layer qui ajoute des classes d&rsquo;alias et des backports pour le code obsol\u00e8te le plus utilis\u00e9 dans les APIs natives. Cela va permettre aux d\u00e9veloppeurs de travailler \u00e0 leur mani\u00e8re vers la compatibilit\u00e9 vers Joomla! 4 sans avoir la sensation qu&rsquo;ils doivent tout reprendre \u00e0 z\u00e9ro.<br \/>\nCela sera tr\u00e8s positif si nous documentons \u00e9galement le proc\u00e9d\u00e9 de conversion pour le code existant. Si un des lecteurs se plaint de la faisabilit\u00e9 de ce plan, j&rsquo;ai la page qui prouve que je documente ce que je dis.             Meilleure int\u00e9gration du Composer<br \/>\nD\u00e9pla\u00e7ons composer.json et composer.lock dans le dossier libraries, pas libraries\/vendor. Cela permettra l\u2019ajout de pr\u00e9-requis sans avoir \u00e0 hacker le noyau.<br \/>\nPermettons aux d\u00e9veloppeurs tiers d&rsquo;ajouter des pr\u00e9-requis au Composer d&rsquo;installation de Joomla! lors de l&rsquo;installation ou des mises \u00e0 jour des extensions. Nous devons voir si cela est possible sur les h\u00e9bergements mutualis\u00e9s sans acc\u00e8s CLI \u2013 pour le contexte, voir la discussion sur Drupal 8. Cela doit \u00eatre li\u00e9 \u00e0 un ensemble global de com_installer. L&rsquo;\u00e9tude de faisabilit\u00e9 devra se concentrer sur la possibilit\u00e9 de d\u00e9pendance de la fonctionnalit\u00e9 d\u00e9couvrir et sur les d\u00e9pendances individuelles des \u00e9tapes s\u00e9par\u00e9es de t\u00e9l\u00e9chargement et d&rsquo;installation qui peuvent chacune \u00eatre compl\u00e9t\u00e9e dans un seul chargement de page.<br \/>\nPour finir, supprimons toutes les librairies natives \u201cinvent\u00e9e ici\u201d en faveur de la d\u00e9pendance du Composer (en particulier pour Jimage, Jgithube, etc).<br \/>\nDI Container<br \/>\nAh, ma b\u00eate noire pr\u00e9f\u00e9r\u00e9e. Actuellement, nous avons cette boite noire globale et magique nomm\u00e9e Jfactory. D\u00e9barassons nous de Jfactory, rempla\u00e7ons-le avec un DI container (quelque chose comme Pimple?) qui est ensuite amen\u00e9 \u00e0 l&rsquo;objet d&rsquo;application. Tout ce que vous voulez peut \u00eatre r\u00e9cup\u00e9r\u00e9 d&rsquo;une mani\u00e8re similaire \u00e0 JoomlaApplication::getInstance()-&gt;getContainer()-&gt;user.<br \/>\nJe sugg\u00e8re \u00e9galement d&rsquo;aller une \u00e9tape plus loin. Chaque type d&rsquo;extension a son propre type de container qui donne acc\u00e8s au principal DI container et charge les d\u00e9pendances qui ont du sens pour le type sp\u00e9cifique du composant. Vous devriez \u00eatre capable de r\u00e9cup\u00e9rer le container d&rsquo;une extension \u00e0 partir de n&rsquo;importe o\u00f9, p.ex. JoomlaContainerComponent::getInstance(\u2018com_something\u2019). Cela permet sans peine HMV. A \u00e9t\u00e9 fait \u2013 dans FOF 3.<br \/>\nR\u00e9vision de MVC<br \/>\nJe sais que le framework de Joomla! a un \u201cnouveau MVC\u201d que j&rsquo;appelle \u201cno MVC\u201d parce que c&rsquo;est ce dont il a l&rsquo;air. Je ne suis pas d&rsquo;accord avec cette approche pour les logiciels distribu\u00e9s en masse comme Joomla! et ses extensions. Je comprends pourquoi vous pouvez avoir besoin de cela pour les applications d\u00e9centralis\u00e9es. Je sugg\u00e8re de le garder dans le noyau pour ce type d&rsquo;utilisation, au cas o\u00f9, mais pas de l&rsquo;utiliser comme un paradigme de d\u00e9veloppement pour Joomla!. Vous vous souvenez ce qu&rsquo;est notre public cible&nbsp;? Exactement.<br \/>\nA la place, je propose de suivre la conduite Laravel, sans les fa\u00e7ades \u2013 une des raisons majeures pour laquelle certains d\u00e9veloppeurs s\u00e9rieux d\u00e9testent Laravel. Restons loin de la s\u00e9paration Model vs Table. Cr\u00e9ons un Model pour les \u00e9l\u00e9ments non-data-aware et un DataModel pour les \u00e9l\u00e9ments data-aware, en utilisant un vocabulaire et des fonctionnalit\u00e9s r\u00e9gl\u00e9s similairement au Model Laravel + Eloquent est une bonne id\u00e9e. J&rsquo;ai d\u00e9j\u00e0 r\u00e9alis\u00e9 le travail dans FOF 3 et bloqu\u00e9 mon d\u00e9veloppement. Les b\u00e9n\u00e9fices imm\u00e9diats sont moins de code, ex\u00e9cution plus rapide, moins de bug et plus de simplicit\u00e9 pour les fixer.<br \/>\nEgalement, comme je l&rsquo;ai dit au-dessus, ajoutons le langage de template Blade pour supporter nos Vues. Je suis \u00e0 moit\u00e9 tent\u00e9 de proposer des vues permettant d&rsquo;\u00eatre d\u00e9finies avec des formulaires XML &#8211; qui se pr\u00eatent \u00e0 des fonctionnalit\u00e9s de RAD tels que des \u00e9chafaudages \u2013 mais \u00e0 moins que vous souhaitiez faire de RAD un framework du noyau, cela est d\u00e9conseill\u00e9.<br \/>\nBien, OK, que se passe-t-il. Mettons simplement FOF 3 dans le noyau. Je sais d\u00e9j\u00e0 que le plus gros d\u00e9savantage sera pour moi. Cela sera cependant b\u00e9n\u00e9fique pour n&rsquo;importe qui d&rsquo;autre d&rsquo;avoir le framework RAD dans le noyau. Actuellement nous trainons les d\u00e9veloppeurs vers Laravel, ZF, etc car c&rsquo;est plus simple de d\u00e9velopper, m\u00eame si vous devez tout d\u00e9velopper \u00e0 partir de z\u00e9ro. Si nous supprimons l&rsquo;id\u00e9e que coder pour Joomla! craint\u201d nous pouvons regagner une audience importante. Cette audience va directement ou indirectement commander le choix de plateforme pour les sites de taille importante \u2013 les nouveaux sites \u2013 et donc augmenter nos parts de march\u00e9.<br \/>\nAPI JSON avec presque aucun code<br \/>\nSi nous pouvions acc\u00e9der aux donn\u00e9es du CMS (et \u00e0 la gestion de ces donn\u00e9es) \u00e0 travers une API JSON nous souhaiterions laisser les utilisations avanc\u00e9es au CMS. Par exemple en utilisant Angular.js pour le rendu des pages, la gestion \u00e0 distance du contenu, les interconnexions de syst\u00e8me, les d\u00e9veloppements d&rsquo;applications mobile simples, etc.<br \/>\nLes bases de travail pour les vues simples de JSON avec HAL sont d\u00e9j\u00e0 pr\u00eates dans FOF. Il n&rsquo;y a aucune importance que le support de HAL devienne une partie du noyau ou non, nous devons l&rsquo;utiliser. Je sais, nous avons d\u00e9j\u00e0 com_ajax, mais ce n&rsquo;est utile que pour AJAX, comme en 2008 encore une fois. HAL permet aux utilisateurs d&rsquo;API de d\u00e9couvrir le contenu plus rapidement, sans avoir \u00e0 connaitre l&rsquo;exact fonctionnement du serveur.<br \/>\nAm\u00e9liorer le sch\u00e9ma d&rsquo;installation et de mise \u00e0 jour<br \/>\nActuellement, chaque modification dans la base de donn\u00e9es du noyau n\u00e9cessite l&rsquo;\u00e9dition de 2 fichiers, un pour mettre \u00e0 jour le composant com_admin et un pour l&rsquo;installation, dans l&rsquo;application d&rsquo;installation. Cela cause des erreurs. C&rsquo;est un probl\u00e8me qui est d\u00e9j\u00e0 r\u00e9solu avec l&rsquo;utilisation de fichiers XML, dans FOF30DatabaseInstaller de FOF, qui permettent au code de l&rsquo;installeur de cr\u00e9er et\/ou mettre \u00e0 jour le sch\u00e9ma automatiquement. Cella simplifierait \u00e9galement la fonctionnalit\u00e9 \u201cCorriger la base de donn\u00e9es\u201d&nbsp;: il est possible d&rsquo;utiliser le m\u00eame code que le sch\u00e9ma installeur.<br \/>\nNous en avons d\u00e9j\u00e0 discut\u00e9 pour l&rsquo;int\u00e9grer dans Joomla! 3. Je pense que nous sommes pr\u00eats ?             Am\u00e9liorer l&rsquo;installeur d&rsquo;extensions<br \/>\nL&rsquo;an pass\u00e9, j&rsquo;ai \u00e9crit un billet \u00e0 ce sujet. Nous pouvons et nous devons ajouter les supports pour les packs de langues. Certaines sp\u00e9cifications ont d\u00e9j\u00e0 \u00e9t\u00e9 r\u00e9alis\u00e9es par David Jardin. Je suis s\u00fbr qu&rsquo;il y a une version r\u00e9vis\u00e9e quelque part, mais je n&rsquo;arrive pas \u00e0 la trouver.<br \/>\nJe sais, vous pensez que je bacle cet important sujet avec 30 mots. Les deux documents en lien sont 2 fois plus long que ce billet dans son int\u00e9gralit\u00e9 \ud83d\ude42<br \/>\nD\u00e9coupler menus et routage<br \/>\nLe syst\u00e8me de menu actuel d\u00e9fini par le routage m\u00e8ne au dupplicate content et il n&rsquo;est pas possible de solutionner le probl\u00e8me. Si un \u00e9l\u00e9ment (p. ex. un article) peut \u00eatre rout\u00e9 \u00e0 travers 2 ou plus menus, il n&rsquo;y a aucun moyen de savoir certainement quelle URL vous devriez suivre \u00e0 moins que vous ne sachiez quel ID vous devez \u00e9galement utiliser. Si aucun ID n&rsquo;est fourni, il est probable que le \u00ab\u00a0mauvais\u00a0\u00bb sera utilis\u00e9, menant au fait que les \u00ab\u00a0mauvais\u00a0\u00bb modules seront charg\u00e9s.<br \/>\nCorriger cela PEUT causer des probl\u00e8mes avec notre syst\u00e8me de menu. Si chaque \u00e9l\u00e9ment a une URL canonique, vous pouvez encore vous retrouver avec les \u00ab\u00a0mauvais\u00a0\u00bb modules charg\u00e9s dans certaines situations. Par exemple si j&rsquo;ai un \u00e9l\u00e9ment menu pour une cat\u00e9gorie dans son int\u00e9gralit\u00e9 et un autre \u00e9l\u00e9ment de menu pour un de ses articles (avec diff\u00e9rentes assignations de modules), cliquer sur cet article chargera une mise en page enti\u00e8rement diff\u00e9rente de celle charg\u00e9e pour les autres articles. Ce n&rsquo;est pas n\u00e9cessairement mauvais, mais cela change les attentes des utilisateurs en comparaison avec Joomla! 3 et les pr\u00e9c\u00e9dentes versions.<br \/>\nPour finir, com_redirect devient inportant depuis qu&rsquo;il est facile d&rsquo;ajouter des URLs personnalis\u00e9es. &nbsp;Dans Joomla! 3 et les pr\u00e9c\u00e9dentes versions, la m\u00e9thode typique \u00e9tait de cr\u00e9er des \u00e9l\u00e9ments cach\u00e9s (pas de module pour les afficher) \u00e0 la place.<br \/>\nJ&rsquo;ai besoin de retours de la part de personnes ayant une meilleure exp\u00e9rience du routage.<br \/>\nTest et QA<br \/>\nMise \u00e0 jour des r\u00e8gles PHPCS vers le format PHPCS 2. Cela permettra aux contributeurs de corriger eux-m\u00eames leur code (le fl\u00e9au de notre existence pour les grandes contributions).<br \/>\nLes tests unitaires et fonctionnels devraient \u00eatre \u00e9crits pour nos premiers cas d&rsquo;utilisation communs. L&rsquo;objectif \u00e0 court terme n&rsquo;est pas de couvrir 80% des tests, c&rsquo;est de s&rsquo;assurer de ne pas r\u00e9gresser.<br \/>\nJoomla! Framework<br \/>\nJe pense que nous pouvons maintenant tous admettre qu&rsquo;essayer de cr\u00e9er un framework PHP g\u00e9n\u00e9rique pour concurrencer avec Symfony, Zend Framework, etc, \u00e9tait un gaspillage de ressources pr\u00e9cieuses. Donc que devrions nous faire avec le Joomla! Framework ?<br \/>\nUne id\u00e9e est de compl\u00e8tement l&rsquo;int\u00e9grer au noyau du CMS, un peu comme l&rsquo;\u00e9tait Joomla! Platform avant que nous l&rsquo;appelions Joomla! Platform. Je pense que c&rsquo;est une mauvaise approche car cela lie le d\u00e9veloppement du CMS avec le d\u00e9veloppement du framework. Ce n&rsquo;est pas toujours une bonne id\u00e9e. Le framework est en fait un lab R&amp;D. Il ne faut pas mettre un lab R&amp;D en production.<br \/>\nUne meilleure approche serait un projet semi-d\u00e9tach\u00e9. Le but de JF est de proposer une plateform stable pour Joomla! (le CMS) pour le construire dessus. Cela n\u00e9cessite un changement majeur pour le d\u00e9veloppement de JF puisqu&rsquo;il doit r\u00e9pondre \u00e0 la complexit\u00e9 de la masse du code r\u00e9parti. Par exemple, le package Uri ne peut simplement pas ignorer les besoins pour un&nbsp;$live_site forc\u00e9 \u00e0 la place de consulter globalement&nbsp;$_SERVER. Mais le s\u00e9parer du CMS permet \u00e0 la fois de faire du R&amp;D \u00e0 un certain rythme sans affecter le d\u00e9veloppement du CMS et permet \u00e0 ceux qui le souhaitent de l&rsquo;utiliser en dehors du CMS.<br \/>\nDe la m\u00eame mani\u00e8re que pour Joomla !, il est possible de r\u00e9cup\u00e9rer les paquets JF \u00e0 travers Composeur. Cela devrait \u00eatre la seule mani\u00e8re possible, et non pas la situation actuelle qui consiste \u00e0 copier \u00e0 la main les fichiers .php sur un r\u00e9pertoire Git vers le dossier libraries\/joomla.<br \/>\nJ&rsquo;aimerais discuter de ces id\u00e9es dans le futur avec Adrew et Michael. Peut \u00eatre que nous pourrions \u00e9crire un post commun sur l&rsquo;avenir du Framework. Je pense que si nous encadrons correctement le framework (jeu de mots) cela pourrait \u00eatre un jeu d&rsquo;enfant pour l&rsquo;organisation de Joomla!. En fait, nous devons (re)d\u00e9finir le public cible et discuter comment nous pouvons enfin aller de l&rsquo;avant.<br \/>\nA suivre : l&rsquo;organisation de Joomla! et le voyage \u00e0 venir                      Cr\u00e9dits photo<br \/>\nImage by Free-Photos from Pixabay<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans les deux premiers opus de cette s\u00e9rie, nous avons discut\u00e9 du public cible pour Joomla! 4 et au-del\u00e0 et de la vision de l&rsquo;utilisateur final. Dans ce troisi\u00e8me opus, nous allons voir ce qu&rsquo;il en est du c\u00f4t\u00e9 des d\u00e9veloppeurs, d\u00e9finir une vision pour l&rsquo;architecture du code et les buts en terme de design.<\/p>\n","protected":false},"author":1,"featured_media":306,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[11],"tags":[],"class_list":["post-307","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sixtine"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Joomla! 4 et au-del\u00e0 \u2013 architecture et design | Cinnk<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Joomla! 4 et au-del\u00e0 \u2013 architecture et design | Cinnk\" \/>\n<meta property=\"og:description\" content=\"Dans les deux premiers opus de cette s\u00e9rie, nous avons discut\u00e9 du public cible pour Joomla! 4 et au-del\u00e0 et de la vision de l&rsquo;utilisateur final. Dans ce troisi\u00e8me opus, nous allons voir ce qu&rsquo;il en est du c\u00f4t\u00e9 des d\u00e9veloppeurs, d\u00e9finir une vision pour l&rsquo;architecture du code et les buts en terme de design.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/\" \/>\n<meta property=\"og:site_name\" content=\"Cinnk\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Cinnk.formation\" \/>\n<meta property=\"article:published_time\" content=\"2020-10-07T14:49:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-10-13T09:27:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cinnk.com\/wp-content\/uploads\/2020\/10\/joomla-4-et-au-dela-architecture-et-design.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"510\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Cinnk\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@CinnkCom\" \/>\n<meta name=\"twitter:site\" content=\"@CinnkCom\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Cinnk\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/\"},\"author\":{\"name\":\"Cinnk\",\"@id\":\"https:\/\/cinnk.com\/fr\/#\/schema\/person\/eacaed860bb77e88b654cab0718cdc3d\"},\"headline\":\"Joomla! 4 et au-del\u00e0 \u2013 architecture et design\",\"datePublished\":\"2020-10-07T14:49:45+00:00\",\"dateModified\":\"2023-10-13T09:27:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/\"},\"wordCount\":3746,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/cinnk.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/cinnk.com\/wp-content\/uploads\/2020\/10\/joomla-4-et-au-dela-architecture-et-design.jpg\",\"articleSection\":[\"sixtine\"],\"inLanguage\":\"fr-FR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/\",\"url\":\"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/\",\"name\":\"Joomla! 4 et au-del\u00e0 \u2013 architecture et design | Cinnk\",\"isPartOf\":{\"@id\":\"https:\/\/cinnk.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/cinnk.com\/wp-content\/uploads\/2020\/10\/joomla-4-et-au-dela-architecture-et-design.jpg\",\"datePublished\":\"2020-10-07T14:49:45+00:00\",\"dateModified\":\"2023-10-13T09:27:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/#primaryimage\",\"url\":\"https:\/\/cinnk.com\/wp-content\/uploads\/2020\/10\/joomla-4-et-au-dela-architecture-et-design.jpg\",\"contentUrl\":\"https:\/\/cinnk.com\/wp-content\/uploads\/2020\/10\/joomla-4-et-au-dela-architecture-et-design.jpg\",\"width\":800,\"height\":510,\"caption\":\"joomla! 4 et au del\u00e0 architecture et design\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/cinnk.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Joomla! 4 et au-del\u00e0 \u2013 architecture et design\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cinnk.com\/fr\/#website\",\"url\":\"https:\/\/cinnk.com\/fr\/\",\"name\":\"Cinnk\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/cinnk.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cinnk.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cinnk.com\/fr\/#organization\",\"name\":\"Cinnk\",\"url\":\"https:\/\/cinnk.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/cinnk.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/cinnk.com\/wp-content\/uploads\/2023\/10\/logo-svg-orange_new.svg\",\"contentUrl\":\"https:\/\/cinnk.com\/wp-content\/uploads\/2023\/10\/logo-svg-orange_new.svg\",\"width\":125,\"height\":32,\"caption\":\"Cinnk\"},\"image\":{\"@id\":\"https:\/\/cinnk.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Cinnk.formation\",\"https:\/\/x.com\/CinnkCom\",\"https:\/\/www.instagram.com\/cinnk\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/cinnk.com\/fr\/#\/schema\/person\/eacaed860bb77e88b654cab0718cdc3d\",\"name\":\"Cinnk\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/cinnk.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2110805a2e278c633c677ec50fd5a9944d8f66b4fac05f86ebb21a2f87be8e0b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2110805a2e278c633c677ec50fd5a9944d8f66b4fac05f86ebb21a2f87be8e0b?s=96&d=mm&r=g\",\"caption\":\"Cinnk\"},\"sameAs\":[\"https:\/\/cinnk.com\"],\"url\":\"https:\/\/cinnk.com\/fr\/author\/cinnkdev\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Joomla! 4 et au-del\u00e0 \u2013 architecture et design | Cinnk","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/","og_locale":"fr_FR","og_type":"article","og_title":"Joomla! 4 et au-del\u00e0 \u2013 architecture et design | Cinnk","og_description":"Dans les deux premiers opus de cette s\u00e9rie, nous avons discut\u00e9 du public cible pour Joomla! 4 et au-del\u00e0 et de la vision de l&rsquo;utilisateur final. Dans ce troisi\u00e8me opus, nous allons voir ce qu&rsquo;il en est du c\u00f4t\u00e9 des d\u00e9veloppeurs, d\u00e9finir une vision pour l&rsquo;architecture du code et les buts en terme de design.","og_url":"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/","og_site_name":"Cinnk","article_publisher":"https:\/\/www.facebook.com\/Cinnk.formation","article_published_time":"2020-10-07T14:49:45+00:00","article_modified_time":"2023-10-13T09:27:01+00:00","og_image":[{"width":800,"height":510,"url":"https:\/\/cinnk.com\/wp-content\/uploads\/2020\/10\/joomla-4-et-au-dela-architecture-et-design.jpg","type":"image\/jpeg"}],"author":"Cinnk","twitter_card":"summary_large_image","twitter_creator":"@CinnkCom","twitter_site":"@CinnkCom","twitter_misc":{"\u00c9crit par":"Cinnk","Dur\u00e9e de lecture estim\u00e9e":"18 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/#article","isPartOf":{"@id":"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/"},"author":{"name":"Cinnk","@id":"https:\/\/cinnk.com\/fr\/#\/schema\/person\/eacaed860bb77e88b654cab0718cdc3d"},"headline":"Joomla! 4 et au-del\u00e0 \u2013 architecture et design","datePublished":"2020-10-07T14:49:45+00:00","dateModified":"2023-10-13T09:27:01+00:00","mainEntityOfPage":{"@id":"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/"},"wordCount":3746,"commentCount":0,"publisher":{"@id":"https:\/\/cinnk.com\/fr\/#organization"},"image":{"@id":"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/#primaryimage"},"thumbnailUrl":"https:\/\/cinnk.com\/wp-content\/uploads\/2020\/10\/joomla-4-et-au-dela-architecture-et-design.jpg","articleSection":["sixtine"],"inLanguage":"fr-FR"},{"@type":"WebPage","@id":"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/","url":"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/","name":"Joomla! 4 et au-del\u00e0 \u2013 architecture et design | Cinnk","isPartOf":{"@id":"https:\/\/cinnk.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/#primaryimage"},"image":{"@id":"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/#primaryimage"},"thumbnailUrl":"https:\/\/cinnk.com\/wp-content\/uploads\/2020\/10\/joomla-4-et-au-dela-architecture-et-design.jpg","datePublished":"2020-10-07T14:49:45+00:00","dateModified":"2023-10-13T09:27:01+00:00","breadcrumb":{"@id":"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/#primaryimage","url":"https:\/\/cinnk.com\/wp-content\/uploads\/2020\/10\/joomla-4-et-au-dela-architecture-et-design.jpg","contentUrl":"https:\/\/cinnk.com\/wp-content\/uploads\/2020\/10\/joomla-4-et-au-dela-architecture-et-design.jpg","width":800,"height":510,"caption":"joomla! 4 et au del\u00e0 architecture et design"},{"@type":"BreadcrumbList","@id":"https:\/\/cinnk.com\/fr\/joomla-4-et-au-dela-architecture-et-design\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/cinnk.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Joomla! 4 et au-del\u00e0 \u2013 architecture et design"}]},{"@type":"WebSite","@id":"https:\/\/cinnk.com\/fr\/#website","url":"https:\/\/cinnk.com\/fr\/","name":"Cinnk","description":"","publisher":{"@id":"https:\/\/cinnk.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cinnk.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/cinnk.com\/fr\/#organization","name":"Cinnk","url":"https:\/\/cinnk.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/cinnk.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/cinnk.com\/wp-content\/uploads\/2023\/10\/logo-svg-orange_new.svg","contentUrl":"https:\/\/cinnk.com\/wp-content\/uploads\/2023\/10\/logo-svg-orange_new.svg","width":125,"height":32,"caption":"Cinnk"},"image":{"@id":"https:\/\/cinnk.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Cinnk.formation","https:\/\/x.com\/CinnkCom","https:\/\/www.instagram.com\/cinnk"]},{"@type":"Person","@id":"https:\/\/cinnk.com\/fr\/#\/schema\/person\/eacaed860bb77e88b654cab0718cdc3d","name":"Cinnk","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/cinnk.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2110805a2e278c633c677ec50fd5a9944d8f66b4fac05f86ebb21a2f87be8e0b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2110805a2e278c633c677ec50fd5a9944d8f66b4fac05f86ebb21a2f87be8e0b?s=96&d=mm&r=g","caption":"Cinnk"},"sameAs":["https:\/\/cinnk.com"],"url":"https:\/\/cinnk.com\/fr\/author\/cinnkdev\/"}]}},"_links":{"self":[{"href":"https:\/\/cinnk.com\/fr\/wp-json\/wp\/v2\/posts\/307","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cinnk.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cinnk.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cinnk.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cinnk.com\/fr\/wp-json\/wp\/v2\/comments?post=307"}],"version-history":[{"count":1,"href":"https:\/\/cinnk.com\/fr\/wp-json\/wp\/v2\/posts\/307\/revisions"}],"predecessor-version":[{"id":590,"href":"https:\/\/cinnk.com\/fr\/wp-json\/wp\/v2\/posts\/307\/revisions\/590"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cinnk.com\/fr\/wp-json\/wp\/v2\/media\/306"}],"wp:attachment":[{"href":"https:\/\/cinnk.com\/fr\/wp-json\/wp\/v2\/media?parent=307"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cinnk.com\/fr\/wp-json\/wp\/v2\/categories?post=307"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cinnk.com\/fr\/wp-json\/wp\/v2\/tags?post=307"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}