Pour toutes les raisons évoquées dans les posts précédents, JSON-LD permet une (beaucoup) plus grande liberté - séparation de la forme (présentation) et du fond (modèle) qui est strict (pour la validation) - et est de ce point de vue plus adapté aux contraintes d'un CMS.
Pour les microdatas, on a déjà vu les limites :
1. Pas de hiérarchie de plus de deux niveaux (Type et FieldGroup) dans le CMS ce qui limite les possibilités par rapport au modèle Schema.org.
(En fait, en l'état actuel, un seul niveau : soit définit au niveau du Type d'item, soit définit au niveau du FieldGroup, car il n'y a pas de relation sémantique créée entre Type et FieldGroup.)
2. L'organisation des données dans la pages se trouve contrainte par le modèle Schema.org : il y a celles qui sont obligatoirement au niveau du Type et celles qui le sont dans le ou les GroupFields.
3. Les Fields ne devraient pas avoir de microdatas en dur au risque de créer un conflit entre la publication des données et le modèle Schema.org (ex. les champs "Date de Création" et "Date de Modification" qui sont incompatibles avec le modèle du type "Product" en l'état actuel, alors que.) Toutes les infos concernant les microdatas devraient être configurables et facultatives.
Edit : Il y a quelques microdatas qui sont peut-être valables quelque soit le contexte comme pour "image" (et tout ce qui va avec
schema.org/Thing
) et peut-être le "voting". Mais elles doivent pouvoir être désactivées si l'on préfère l'option JSON-LD. Question de flexibilité.
Si la contrainte 3. est levée et que toutes les informations de microdata deviennent configurables et facultatives, pourquoi ne pas conserver la possibilité d'afficher des microdatas malgré les contraintes 1. et 2. ? Elles peuvent être utiles dans certains cas en complément de JSON-LD.
L'option JSON-LD offre plus de flexibilité et permet de couvrir tous les cas d'utilisation (ce qui n'est pas négligeable pour un CMS). Elle permet aussi travailler sur des pages existantes sans avoir besoin de les reconfigurer.
Après, pour l'implémentation, c'est une autre histoire. Mais quelque chose de simple serait le bienvenue. Un text area de niveau Type d'item/Template qui permette de saisir le JSON-LD avec les Fields, le tout en PHP afin de pouvoir retraiter les données des Fields si besoin (suppression des tags, des '"', des , etc.) sur le modèle l'édition des fichiers du template (modular.php), et que le résultat remonte au bon endroit dans le <head>, avec une doc minimale, ce serait parfait. Mais, est-ce techniquement faisable ?
Edit : Il y a des discussions pour savoir où il est possible de mettre le JSON-LD.
Comme pour les microdatas, on devrait pouvoir publier les JSON-LD dans le <body>. C'est quand même plus simple. A confirmer.
Schema.org - JSON-LD - Where to Place?
stackoverflow.com/questions/28687653/sch...on-ld-where-to-place