Le projet Gutenberg et son éventuelle fonction d’édition complète du site se heurtent à un problème majeur qui devra être résolu. Les thèmes basés sur des blocs de l’avenir sont actuellement sur la voie d’un système de modèles qui comprendra des fichiers HTML simples. Bien que cela fonctionne pour la majorité de la sortie d’un thème, le problème consiste à déterminer comment le projet gérera les valeurs dynamiques.

La plupart des discussions ont porté sur la gestion des URL, qui sont probablement le cas d’utilisation le plus courant. Actuellement, les modèles de thème ont toutes sortes de contenu dynamique. Une grande partie de cela sera remplacée par des blocs à mesure que nous continuerons à évoluer vers l’édition complète du site. Cependant, toutes les données dynamiques n’auront pas un équivalent de bloc.

Un bon exemple est que les auteurs de thèmes ne peuvent pas actuellement ajouter le URL de la page d’accueil du bloc de navigation. Certains thèmes expérimentaux basés sur des blocs utilisent un simple / , qui pointe vers le mauvais emplacement sur de nombreuses installations WordPress.

Résoudre ce problème plus tôt que tard est important pour la progression du développement de thèmes dans un monde en blocs. Cependant, une telle solution doit être soigneusement élaborée afin que la communauté thématique ne soit pas enlisée par une décennie ou plus avec une mauvaise mise en œuvre des modèles.

Les propositions actuelles

Le référentiel Gutenberg a actuellement un ticket ouvert pour discussion sur la gestion des valeurs dynamiques dans les modèles. À l’heure actuelle, il existe quatre propositions sur la façon de résoudre le problème.

Remplacement à la volée des cordes

Une solution serait d’utiliser PHP pour analyser chaque fichier HTML et remplacer les chaînes représentant des données dynamiques à la volée. Cela nécessiterait d’analyser tous les modèles d’un thème à chaque chargement de page. L’inconvénient est que cela ralentirait le chargement des pages. Nous aurions besoin de véritables tests unitaires pour voir combien de pic de temps de chargement cette méthode crée.

En supposant un Moustache-comme la syntaxe, les modèles auraient des valeurs telles que la sortie d’image suivante:

Un avantage supplémentaire de l’adoption d’une telle solution est que WordPress pourrait automatiquement échapper à ces valeurs dynamiques par défaut. Ce serait une aubaine pour le thème de la sécurité, qui est l’un des les plus grands problèmes rencontrés par l’équipe d’examen des thèmes.

Remplacement de chaîne unique

La deuxième solution propose d’utiliser la même méthode mais d’analyser les fichiers HTML une fois, lors de l’activation du thème, et de remplacer les valeurs dynamiques par des valeurs appropriées. Le plus grand avantage de cette méthode est que l’analyse syntaxique n’affecterait pas la vitesse de chargement frontal.

Cette méthode est problématique car elle ne prend pas en compte les modifications apportées aux modèles après l’analyse initiale. Il ne gère pas non plus les scénarios lorsqu’une valeur change via l’entrée utilisateur. Par exemple, un utilisateur peut décider de modifier l’emplacement de sa page d’articles de blog. Par conséquent, une URL analysée qui devient statique pointerait vers le mauvais emplacement.

Modèles en JSON

Une troisième solution propose l’idée de transformer des fichiers de thème en JSON. Il est beaucoup plus facile d’analyser et d’extraire des données d’un fichier JSON que d’un fichier HTML. Cependant, les concepteurs de thèmes n’écrivent pas JSON pour générer la sortie du modèle. HTML existe pour une raison.

Cette solution élèverait la barrière si élevée pour les nouveaux auteurs de thèmes qu’il serait rare que ceux qui viennent d’apprendre le CSS et le HTML de base se lancent dans le développement de thèmes WordPress. Cette idée est si étrangère à l’idée de conception de modèle qu’elle ne devrait pas être sérieusement envisagée.

Modèles qui renvoient des blocs via PHP

La quatrième et dernière proposition consiste à utiliser des fichiers PHP avec une fonction qui renvoie un modèle de bloc. Cette méthode serait simple et pourrait être facilement reprise pour les auteurs de thèmes existants qui connaissent bien PHP.

Un modèle ressemblerait à quelque chose comme ceci:

function my_theme_front_page() {
	return '';
}

Cette idée met davantage l’accent sur PHP que sur HTML. Ce serait la solution la plus facile à mettre en œuvre pour l’équipe de développement de Gutenberg. Cependant, comme la méthode JSON, elle soulèverait la barrière à l’entrée pour les auteurs de thèmes pour la première fois. Cela signifie que les caractères entre guillemets et guillemets doubles ne seront pas mélangés. La méthode serait sujette à des bugs et semble étrangère aux modèles modernes.

Les modèles doivent se concentrer sur HTML

Les modèles doivent toujours être HTML en premier. Même dans notre système de thèmes actuel, les auteurs de thèmes peuvent créer de beaux thèmes, sûrs et fonctionnels en connaissant simplement HTML et CSS. PHP est secondaire, en particulier en ce qui concerne l’aspect des modèles. Notre système de modèles repose sur la connaissance du HTML et sur la connexion de quelques-uns balises de modèle, qui sont des fonctions PHP que WordPress propose pour insérer entre les balises HTML. Cette simplicité est, en partie, ce qui a rendu le développement de thèmes WordPress si facile à apprendre pour quiconque souhaite y consacrer un peu de temps.

Les thèmes basés sur des blocs ont le potentiel de faire tomber la barrière encore plus bas que notre système de modèles actuel. Cependant, les modèles en tant que fonctions JSON ou PHP vont à l’encontre de cela. Toute solution qui nous éloigne des blocs de construction de base du Web, HTML, ne devrait pas être sur la table de discussion.

Il est peut-être temps d’adopter un moteur de création de modèles PHP approprié. Il existe de nombreux exemples. Brindille, Lame, Smarty, et d’autres existent depuis des années. Ceux-ci ont également une certaine barrière à l’entrée sous la forme d’une nouvelle syntaxe, mais cela ne devrait pas être plus difficile que d’apprendre à brancher des balises de modèle dans le système actuel.

À tout le moins, nous devrons trouver une solution pour gérer les données dynamiques dans des fichiers HTML essentiellement statiques.



Source link