Microdatos

From Joomla! Documentation

This page is a translated version of the page Microdata and the translation is 100% complete.
Content is Incomplete

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 Abulafia (talk| contribs) 4 years ago. (Purge)

Joomla! 
≥ 3.2

¿Qué es Microdatos?

Los microdatos es una manera de añadir información contextual a tu sitio web y tus contenidos, permitiendo a los motores de búsqueda comprender mejor la información que les proporcionas.

La información contextual permite a los motores de búsqueda entender el significado de la información que se presenta en tu sitio web, le permite responder mejor a un "lenguaje natural" más detallado, de las consultas, donde una comprensión del significado ayuda a interpretar el contenido más relevante a mostrarse.

Los microdatos pueden ser utilizados para explicar cualquier cosa que quieras explicar, y hay más 'esquemas' que se agregan a una base regular. Hay varios vocabularios en existencia, sin embargo en la actualidad el sistema preferido por los motores de búsqueda es el de schema.org.
Para entender cómo los motores de búsqueda utilizan la información de los microdatos, echa un vistazo a este corto video.

Joomla! 3.x hoja de ruta para los Microdatos

La versión 3.2 introdujo la biblioteca JMicrodata, parte de uno de los muchos proyectos exitosos presentados durante el GSoC 2013 y la 3.3 versión introdujo elementos de microdatos en dos de los diseños de componentes del núcleo. En 3.4, tenemos el objetivo de continuar perfeccionando la biblioteca JMicrodata para asegurar que es flexible y fácil de usar para los usuarios de todos los niveles de habilidad y continuar con la aplicación de los de los elementos microdatos de los diseños fundamentales.

¿Cómo puedo utilizar los Microdatos?

Los microdatos pueden ser añadidos a Joomla! sobrescribiendo la plantilla o con el uso de plugins que permitan insertar los microdatos en recursos específicos.
Ya que Joomla! Joomla 3.2 tiene una biblioteca dentro suyo que permite a los desarrolladores recurrir a los microdatos sin necesidad de formatearlos correctamente.

JMicrodata

JMicrodata es una librería para implementar y obtener los microdatos semánticos de http://schema.org.

La biblioteca fue diseñada con esta meta en mente:

  1. Tener la posibilidad de cambiar el Tipo de Microdatos dinámicamente, precisamente tu cambias el Tipo (hay 558 tipos, diferentes, disponibles).
  2. Mostrar la semántica validada, la biblioteca se encarga de mostrar los datos correctamente.
  3. Activar/desactivar los microdatos la semántica.
  4. Retrocesos, nunca se debe perder ningún sentido semántico.

La clase JMicrodata utiliza el archivo types.json que contiene todos los Tipos y Propiedades disponibles de http://schema.org, el archivo se ha creado automáticamente con el el rastreador web https://github.com/PAlexcom/Spider4Schema.

¿Cómo puedo utilizar la biblioteca JMicrodata?

En primer lugar necesitas crear una instancia de la biblioteca en tus extensiones:

<?php
$microdata = new JMicrodata('Article');
?>

Así que vamos a suponer que tienes la siguiente cadena de texto que es parte de tu artículo:

<div>
    <!-- Author of the content -->
    <span>
        Written by Alexandru Pruteanu
    </span>
    <!-- The content -->
    Here is the article text...
<div>

Y deseas agregar la semántica de microdatos e instanciarla en el ámbito de la aplicación actual, como puede ser 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 biblioteca mostrará:

<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é sucede si el ámbito actual es algo más que Article, por ejemplo, el ámbito Product, y el ámbito actual no tiene propiedades autor y/o 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>

Como has añadido un retroceso ->fallback('Person', 'name'), que se preserva al tipo Person, entonces no perderás ningún sentido semántico.

<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 no necesitas toda la información de los microdatos, sólo tienes que desactivar esa característica llamando: $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 biblioteca mostrará lo siguiente:

<div>
    <!-- Author of the content -->
    <span>
        Written by Alexandru Pruteanu
    </span>
    <!-- The content -->
    Here is the article text...
<div>

Documentación de JMicrodata

Todos las salidas de Microdatos en HTML es manejada por la clase JMicrodata.

JMicrodata::htmlScope($scope);
Devuelve:

itemscope itemtype="http://schema.org/$scope"

el código HTML de Scope de un determinado Type, debe estar dentro de un elemento etiqueta HTML.

JMicrodata::htmlProperty($property);
Devuelve:

itemprop="$property"

el código HTML de Property, debe estar dentro de un elemento etiqueta HTML.

JMicrodata::htmlSpan($content, $property = "", $scope = "", $inverse = false);
Devuelve:

<span itemscope itemtype="http://schema.org/$scope" itemprop="$property">
    $content
</span>

los microdatos en una etiqueta , también está disponibles en un método JMicrodata::htmlDiv() con las mismas funcionalidades.

JMicrodata::htmlMeta($content, $property, $scope = "", $inverse = false);
Devuelve:

<meta $property $scope content="$content">

los microdatos en una etiqueta <meta> con el contenido para máquinas, este método no añade la etiqueta meta en la sección <head> de la página.

$microdata = JMicrodata($type = "", $flag = true);
Crea una nueva instancia de la clase JMicrodata y configura el Type actual, el parámetro flag es para activar o desactivar la salida semántica de los microdatos en HTML. Retrotrae Al tipo Thing por si el Tipo no está disponible o dado.

$microdata->enable($flag = true);
Activa o Desactiva la salida semántica de los Microdatos en HTML.

$microdata->isEnabled();
Devuelve true si la salida semántica de los Microdatos en HTML está habilitada.

$microdata->setType($type);
Establece un nuevo Type de Schema.org, también hay una función $microdata->getType() para recuperar el Type actual.

$microdata->property($name);
Configura Property, si está disponible en el ámbito del Type actual, también hay una función $microdata->getProperty() para recuperar Property.

$microdata->content($value, $machineValue = null);
Configura de un Text value o Content value para los Microdatos, también hay una función $microdata->getContent() para recuperar el Text value actual.

$microdata->fallback($type, $property);
Configura un Retroceso de Type y de Property, también existen $microdata->getFallbackType() y $microdata->getFallbackProperty() para recuperar el Retroceso de Type y el de Property. El retroceso es a Thing Type si Type no está disponible, el Retroceso es a null si Property si no está disponible.

$microdata->displayScope();
Devuelve:

itemscope itemtype="http://schema.org/$scope

el código HTML del Scope del Type actual, debe estar inserto dentro de un elemento etiqueta.

$microdata->display($displayType = "", $emptyOutput = false); Devuelve los Microdatos HTML, si Property no está disponible verifica un Retroceso, de lo contrario devuelve .

Hay 4 tipos de $displayType:

  • inline
  • span
  • html
  • meta

Este método contiene la lógica de visualización HTML de los Microdatos, Si se especifica el parámetro $displayType, los Microdatos serán devueltos de la forma especificada y esperada, De lo contrario, si el parámetro $displayType está vacío será procesado por el método display() y devuelve el código HTML de la manera correcta, con las Property Type esperada (ejemplo de expectedTypes = URL, Texto, Persona ...)

— ¿Qué pasa si llamas a display($displayType = "meta")?

El HTML devuelto estará dentro de una etiqueta <meta> HTML.

— ¿Qué sucede si llamas a display()?

El método de verifica automáticamente el tipo esperado de los Property entregados y devolverá los Microdatos HTML correctos.

Hay 3 tipos de Microdatos:

  • nested → ejemplo:
itemprop="$property" itemscope itemtype="http://schema.org/$scope"

si también hay disponible un $content será la salida

<span itemprop="$property" itemscope itemtype="http://schema.org/$scope">$content</span>
  • meta → ejemplo:
<meta content="$content" itemprop="$property">

si no hay $content está disponible será la salida

itemprop="$property"
  • normal → ejemplo:
itemprop="$property"

si también hay disponible un $content será la salida

<span itemprop="$property">$content</span>

Para algunos ejemplos de uso se puede ver la biblioteca del archivo de prueba https://github.com/joomla/joomla-cms/blob/staging/tests/unit/suites/libraries/joomla/microdata/JMicrodataTest.php

Cómo implementar los Microdatos tu mismo