Je gère un module Drupal ( Crumbs ), qui calcule le fil d'Ariane pour un site Drupal.
Je veux rendre ces chapelures SEO-friendly en utilisant par exemple. balisage sémantique des métadonnées schema.org. Idéalement, cela devrait fonctionner automatiquement sur tous les sites, quel que soit le thème actif.
D'autre part, je ne veux pas interférer avec les thèmes qui remplacent le code HTML d'un fil d'Ariane, ou qui ciblent le HTML de chapelure avec CSS.
Cela signifie que je suis en conflit. Soit le module contrôle le code HTML, soit le thème, mais les deux sont difficiles.
Alors j'ai pensé à une solution de contournement: avoir un fil d'Ariane optimisé pour le référencement caché avec "display: none;", généré par le module, et un fil d'Ariane visible où le code HTML est généré par le thème (basé sur les données structurées du module).
Si j'ai un fil d'Ariane optimisé pour le référencement et un fil d'Ariane visible, non optimisé pour le référencement, cela diminue-t-il l'effet sur le référencement?
Autrement dit, le seul effet réel est que le fil d'Ariane apparaisse dans le résultat de la recherche. Si c'est le cas, alors tout va bien?
La page schema.org http://schema.org/BreadcrumbList mentionne Microdata, RDFa et JSON-LD. Naturellement, la variante JSON-LD n’a aucune sortie, alors peut-être que ce serait l’ajustement naturel?
Le module utilise maintenant json-ld pour les métadonnées de fil d’ariane.
Les trois syntaxes permettent de fournir des données structurées cachées:
script
est masqué par défaut.link
/meta
(qui sont masqué par défaut) dans les éléments body
+ sans signification div
/span
si le regroupement est nécessaire.Masquer le balisage pour la chapelure n’affectera probablement pas votre référencement, car la chapelure dupliquée masquée ne fournit aucun contenu qui ne soit pas également visible sur la page.
Pour un module Drupal, je pense que la meilleure pratique consiste à utiliser la syntaxe RDFa :
Le support technique fait partie de Drupal core dans D7 et D8 ( module RDF , API de mappage RDF )
Les modules peuvent fournir des mappages des données et métadonnées de leurs ensembles à RDF classes et propriétés. Ce module s’occupe d’injecter ces correspondances dans des variables disponibles pour les fonctions de thème et les modèles. Tous les Drupal thèmes centraux sont codés pour être compatibles RDFa.
Si vous utilisez l'API de mappage RDF dans votre module, je pense que les utilisateurs ne verront même pas le type de RDFa dans le modèle, mais uniquement les attributs généraux Drupal auxquels ils sont habitués autres fichiers modèles ( rdf_rdfa_attributes )
Ce tableau sera généralement passé par
Drupal\Core\Template\Attribute
afin de créer les variables d'attribut disponibles pour les fichiers de modèle. Ceux-ci incluent$attributes
,$title_attributes
,$content_attributes
et les variables$item_attributes
spécifiques au champ.
Si les utilisateurs sont intéressés par les données structurées, ils apprendront probablement RDFa car c’est ce que Drupal prend en charge immédiatement. Au cas où ils voudraient manipuler les données structurées d'une manière ou d'une autre et que vous utilisiez une syntaxe différente, ils devraient en apprendre une autre simplement à cause de votre module.
Si vous utilisez une syntaxe différente, il sera plus difficile d'intégrer votre Microdata/JSON-LD au RDFa généré par Drupal.
Par exemple, pour ajouter votre élément BreadcrumbList
(dans JSON-LD ou Microdata) à l’élément WebPage
(dans RDFa, généré par Drupal) avec la propriété breadcrumb
, vous ne pouvez pas imbriquer la liste avec le paramètre property
. attribut sous le WebPage
. Au lieu de cela, vous devez générer un URI pour BreadcrumbList
(et vous assurer qu'il est unique, c'est-à-dire qu'il n'est pas utilisé par le propriétaire du site de toute autre manière), et référencer cet URI en tant que valeur pour la propriété breadcrumb
sous WebPage
(afin que vous ayez utiliser quand même RDFa).
Si un propriétaire de site souhaite que son site produise du JSON-LD, il est facile de convertir tout le RDFa en JSON-LD. Mais il est impossible de convertir JSON-LD en RDFa qui utilise le balisage existant, car la connexion du balisage à son contenu n’est pas capturée avec JSON-LD.