Microdata/es: Difference between revisions

From Joomla! Documentation

No edit summary
Created page with "Activa o Desactiva la salida semántica de los Microdatos en HTML."
Line 201: Line 201:
<br>
<br>
<code>'''$microdata->enable($flag = true);'''</code><br>  
<code>'''$microdata->enable($flag = true);'''</code><br>  
Enable or Disable HTML Microdata semantics output.
Activa o Desactiva la salida semántica de los Microdatos en HTML.
<br>
<br>
<br>
<br>

Revision as of 14:49, 10 November 2015

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) 10 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.
Ta 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 del Ámbito de un determinado Tipo, debe estar dentro de una etiqueta HTML del elemento.

JMicrodata::htmlProperty($property);
Devuelve:

itemprop="$property"

el HTML de la Propiedad, debe estar dentro de una etiqueta HTML del elemento.

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án 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 la configura el Tipo actual, la bandera param es para activar o desactivar la salida semántica de los microdatos en HTML. El retroceso en el tipo Thing es 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();
Return true if Microdata semantics HTML output are enabled.

$microdata->setType($type);
Set a new Schema.org Type, there is also a $microdata->getType() function to retrieve the current Type.

$microdata->property($name);
Setup the Property if available in the current Type Scope, there is also a $microdata->getProperty() function to retrieve the current Property.

$microdata->content($value, $machineValue = null);
Setup a Text value or Content value for the Microdata, there is also a $microdata->getContent() function to retrieve the current Text value.

$microdata->fallback($type, $property);
Setup a Fallback Type and Property, there are also the $microdata->getFallbackType() and $microdata->getFallbackProperty() to retrieve the Fallback Type and Fallback Property. Fallback to Thing Type if the Type isn't available, Fallback to null the Property if isn't available.

$microdata->displayScope();
Return:

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

the HTML with the Scope of the current Type, must be inserted inside a tag element.

$microdata->display($displayType = "", $emptyOutput = false); Return the Microdata HTML, if the Property isn't available it checks for a Fallback, otherwise return .

There are 4 types of $displayType:

  • inline
  • span
  • html
  • meta

This method contains the HTML Microdata display logic, If you specify the $displayType param, the Microdata will be returned the way you specified and expect — to, Otherwise if the $displayType param is empty it will be processed by the display() method and returned the HTML in the right way, with the expected Property Type (example of expectedTypes = URL, Text, Person ...)

— What happens if you call display($displayType = "meta") ?

The returned HTML will be inside a <meta> HTML tag.

— What happend if you call display()?

The method will automatically check the expected type for the given Property, and will return the right Microdata HTML.

There are 3 types of Microdata:

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

if there is also available a $content it will output

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

if no $content is available will output

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

if there is available a $content will output

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

For some usage examples you can see the library test file https://github.com/joomla/joomla-cms/blob/master/tests/unit/suites/libraries/joomla/microdata/JMicrodataTest.php

How To implement Microdata yourself