Les microdonnées (Microdata)
From Joomla! Documentation
This article or section is incomplete, which means it may be lacking information. You are welcome to assist in its completion by editing it as well. If this article or section has not been edited in several days, please consider helping complete the content.
This article was last edited by FuzzyBot (talk| contribs) 7 years ago. (Purge)
Qu'est-ce qu'une Microdonnée (Microdata) ?
Les microdonnées sont un moyen d'ajouter des informations contextuelles à votre site web et son contenu, en permettant aux moteurs de recherche de mieux comprendre les informations que vous leur fournissez.
Une information contextuelle permet aux moteurs de recherche de comprendre le sens de l'information présentée sur votre site web en traduisant en langage courant et ainsi en favorisant la compréhension et la signification et qui permet ainsi d'interpréter le contenu le plus pertinent devant être affiché.
Les microdonnées peuvent être utilisées pour expliquer à peu près tous les sujets que vous souhaiteriez préciser avec différents schémas pouvant être ajoutés. Il existe différents vocabulaires, cependant à l'heure actuelle, le système privilégié par les moteurs de recherche est : schema.org.
Pour comprendre comment les moteurs de recherche utilisent les informations contenues dans les microdonnées, vous pouvez consulter cette courte vidéo (en anglais).
Feuille de route pour l'utilisation de Microdonnées avec Joomla! 3.x
La version 3.2 a introduit la bibliothèque JMicrodata qui est issue d'un des nombreux projets présentés au cours du GSoC 2013 et la version 3.3 a introduit les éléments de microdonnées pour deux layout de composants natifs. Pour 3.4, l'objectif est de continuer à travailler sur la bibliothèque JMicrodata pour assurer sa flexibilité et sa facilité d'utilisation pour les utilisateurs de tous niveaux et également de poursuivre l’implantation des éléments de microdonnées pour d'autres extensions natives.
Comment puis-je utiliser les Microdonnées?
Les microdonnées peuvent être ajoutées à Joomla! à l'aide des substitutions de template ou en utilisant des plugins qui vous permettent d'insérer des microdonnées à des ressources spécifiques.
Depuis Joomla! il existe une bibliothèque dans Joomla! qui permet aux développeurs de faire appel à des microdonnées sans avoir à les formater correctement.
JMicrodata
JMicrodata est une bibliothèque permettant d'implémenter et rendre des microdonnées sémantiques http://schema.org.
La bibliothèque a été conçue avec cet objectif à l'esprit :
- Avoir la possibilité de changer dynamiquement le type de microdonnées, il vous suffit de modifier le type (558 types différents sont disponibles).
- Afficher une sémantique validée, la bibliothèque se charge d'afficher correctement les données.
- Activer/désactiver les microdonnées sémantiques.
- Fallbacks (solutions de repli), vous ne devriez jamais perdre de sémantique significative.
La classe JMicrodata utilise le fichier types.json qui contient tous les types et propriétés http://schema.org disponibles, ce fichier a été automatiquement créé avec le robot d'indexation https://github.com/PAlexcom/Spider4Schema.
Comment puis-je utiliser la bibliothèque JMicrodata ?
Tout d'abord, vous devez créer une instance de la bibliothèque dans vos extensions :
<?php
$microdata = new JMicrodata('Article');
?>
Supposons que vous ayez la chaîne suivante qui est une partie de votre article :
<div>
<!-- Author of the content -->
<span>
Written by Alexandru Pruteanu
</span>
<!-- The content -->
Here is the article text...
<div>
Et que vous souhaitez ajouter des microdonnées sémantiques. Vous définissez le type de variable de portée (scope) en tant que Article :
<?php
$microdata = new JMicrodata('Article');
?>
<div <?php echo $microdata->displayScope();?>>
<!-- Author of the content -->
<span>
Written by <?php echo $microdata->content('Alexandru Pruteanu')->property('author')->fallback('Person', 'name')->display();?>
</span>
<!-- The content -->
<?php echo $microdata->content('Here is the article text...')->property('articleBody')->display();?>
<div>
La bibliothèque va afficher :
<div itemscope itemtype='https://schema.org/Article'>
<!-- Author of the content -->
<span>
Written by
<span itemprop='author' itemscope itemtype='https://schema.org/Person'>
<span itemprop='name'>Alexandru Pruteanu</span>
</span>
</span>
<!-- The content -->
<span itemprop='articleBody'>Here is the article text...</span>
<div>
Qu'advient-il si la variable de portée (scope) actuelle est différente de Article, par exemple une variable de portée Product (produit) et que la variable de portée actuelle (scope) ne contient pas de propriété author (auteur) et articleBody ?
<?php
$microdata = new JMicrodata('Product');
?>
<div <?php echo $microdata->displayScope();?>>
<!-- Author of the content -->
<span>
Written by <?php echo $microdata->content('Alexandru Pruteanu')->property('author')->fallback('Person', 'name')->display();?>
</span>
<!-- The content -->
<?php echo $microdata->content('Here is the article text...')->property('articleBody')->display();?>
<div>
Comme vous avez ajouté un repli (fallback) ->fallback('Person', 'name'), cela va 'replier' vers le type Person et vous ne perdrez ainsi aucune sémantique significative.
<div itemscope itemtype='https://schema.org/Product'>
<!-- Author of the content -->
<span>
Written by
<span itemscope itemtype='https://schema.org/Person'>
<span itemprop='name'>Alexandru Pruteanu</span>
</span>
</span>
<!-- The content -->
Here is the article text...
<div>
Si vous n'avez pas besoin de toutes ces informations de microdonnées, il vous suffit de désactiver cette fonction en appelant : $microdata->enable(false);
<?php
$microdata = new JMicrodata('Product');
$microdata->enable(false);
?>
<div <?php echo $microdata->displayScope();?>>
<!-- Author of the content -->
<span>
Written by <?php echo $microdata->content('Alexandru Pruteanu')->property('author')->fallback('Person', 'name')->display();?>
</span>
<!-- The content -->
<?php echo $microdata->content('Here is the article text...')->property('articleBody')->display();?>
<div>
La bibliothèque affichera ceci :
<div>
<!-- Author of the content -->
<span>
Written by Alexandru Pruteanu
</span>
<!-- The content -->
Here is the article text...
<div>
Documentation sur JMicrodata
Tous les rendus HTML de microdonnées sont gérés par la classe JMicrodata.
JMicrodata::htmlScope($scope);
Retourne :
itemscope itemtype="http://schema.org/$scope"
Le HTML Scope du Type donné doit être à l'intérieur d'un élément de balise HTML.
JMicrodata::htmlProperty($property);
Retourne :
itemprop="$property"
Le code HTML de la Property donnée (propriété) doit être à l'intérieur d'un élément de balise HTML.
JMicrodata::htmlSpan($content, $property = "", $scope = "", $inverse = false);
Retourne :
<span itemscope itemtype="http://schema.org/$scope" itemprop="$property">
$content
</span>
Les microdonnées sont dans une balise <span>, une méthode JMicrodata::htmlDiv() est également disponible, avec les mêmes fonctionnalités.
JMicrodata::htmlMeta($content, $property, $scope = "", $inverse = false);
Retourne :
<meta $property $scope content="$content">
Les microdonnées dans une balise <meta> avec le contenu pour les machines : cette méthode n'ajoute pas de balise méta dans la section <head> de la page.
$microdata = JMicrodata($type = "", $flag = true);
Créé une nouvelle instance de la classe JMicrodata, définit sur le Type actuel, le paramètre flag sert à l'activation ou la désactivation de la sortie HTML des microdonnées sémantiques. Repli (fallback) vers le type Thing si le Type n'est pas disponible ou indiqué.
$microdata->enable($flag = true);
Active ou désactive la sortie HTML des microdonnées sémantiques.
$microdata->isEnabled();
Retourne 'true' si la sortie HTML des microdonnées sémantiques est activée.
$microdata->setType($type);
Définit un nouveau Type Schema.org , il existe également une fonction $microdata->getType() pour récupérer le Type en cours.
$microdata->property($name);
Définit la Property si disponible dans la variable de portée (scope) Type, il existe également une fonction $microdata->getProperty() pour récupérer la valeur en course de Property.
$microdata->content($value, $machineValue = null);
Définit une valeur de Texte ou une valeur de contenu pour les microdonnées, il existe également une fonction $microdata->getContent() pour récupérer la valeur de texte en cours.
$microdata->fallback($type, $property);
Définit un repli (fallback) Type et Property, il existe également $microdata->getFallbackType() et $microdata->getFallbackProperty() pour récupérer le repli Type et Property. Replie vers Thing Type si le Type n'est pas disponible, replie sur null si la propriété n'est pas disponible.
$microdata->displayScope();
Retourne :
itemscope itemtype="http://schema.org/$scope
Le HTML avec le Scope du Type en cours doit être insérer à l'intérieur d'une balise d'élément.
$microdata->display($displayType = "", $emptyOutput = false);
Retourne les Microdonnées HTML, si Property n'est pas disponible, il vérifiera s'il y a un repli, ou sinon il retournera .
Il existe 4 types de $displayType :
- inline
- span
- html
- meta
Cette méthode contient la logique d'affichage du HTML des microdonnées, Si vous spécifiez le paramètre $displayType, les microdonnées seront retournées selon vos spécifications. Si le paramètre $displayType est vide, la méthode display() sera utilisée et retournera correctement le code HTML, avec le type attendu de Property (exemple de types attendus : = URL, Texte, Personne...)
— Qu'advient-il si vous appelez display($displayType = "meta") ?
Le code HTML renvoyé sera à l'intérieur d'une balise HTML <meta>.
— Qu'advient-il si vous appelez display() ?
La méthode vérifiera automatiquement le type attendu pour la propriété donnée, et retournera le bon HTML des microdonnées.
Il existe 3 types de microdonnées :
- imbriquée → exemple :
itemprop="$property" itemscope itemtype="http://schema.org/$scope"
Si un $content est également disponible, cela retournera
<span itemprop="$property" itemscope itemtype="http://schema.org/$scope">$content</span>
- méta → exemple :
<meta content="$content" itemprop="$property">
Si aucun $content n'est disponible, cela retournera
itemprop="$property"
- normal → exemple :
itemprop="$property"
Si un $content est disponible, cela retournera
<span itemprop="$property">$content</span>
Pour des exemples d'utilisation, vous pouvez consulter le fichier de test de la bibliothèque sur https://github.com/joomla/joomla-cms/blob/master/tests/unit/suites/libraries/joomla/microdata/JMicrodataTest.php