Microdata/es: Difference between revisions
From Joomla! Documentation
No edit summary |
No edit summary |
||
| (35 intermediate revisions by 3 users not shown) | |||
| Line 17: | Line 17: | ||
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. | 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. | ||
<br> | <br> | ||
Ya que '''Joomla!''' {{JVer|3.2}} tiene una [https://github.com/joomla/joomla-cms/blob/staging/libraries/src/Microdata biblioteca] dentro suyo que permite a los desarrolladores recurrir a los microdatos sin necesidad de formatearlos correctamente. | |||
== JMicrodata == | == JMicrodata == | ||
[https://github.com/joomla/joomla-cms/blob/ | [https://github.com/joomla/joomla-cms/blob/staging/libraries/src/Microdata/Microdata.php JMicrodata] es una librería para implementar y obtener los microdatos semánticos de http://schema.org. | ||
<br> | <br> | ||
<br> | <br> | ||
| Line 28: | Line 28: | ||
# '''Activar/desactivar los microdatos''' la semántica. | # '''Activar/desactivar los microdatos''' la semántica. | ||
# '''Retrocesos''', nunca se debe perder ningún sentido semántico. | # '''Retrocesos''', nunca se debe perder ningún sentido semántico. | ||
La clase JMicrodata utiliza el archivo [https://github.com/joomla/joomla-cms/blob/ | La clase JMicrodata utiliza el archivo [https://github.com/joomla/joomla-cms/blob/staging/libraries/src/Microdata/types.json 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?== | ==¿Cómo puedo utilizar la biblioteca JMicrodata?== | ||
| Line 161: | Line 161: | ||
</source> | </source> | ||
el código HTML de ''Scope'' de un determinado ''Type'', debe estar dentro de | el código HTML de ''Scope'' de un determinado ''Type'', debe estar dentro de un elemento etiqueta HTML. | ||
<br> | <br> | ||
<br> | <br> | ||
| Line 171: | Line 171: | ||
</source> | </source> | ||
el código HTML de '' | el código HTML de ''Property'', debe estar dentro de un elemento etiqueta HTML. | ||
<br> | <br> | ||
<br> | <br> | ||
| Line 178: | Line 178: | ||
<source lang="php"> | <source lang="php"> | ||
<span itemscope itemtype="http://schema.org/$scope itemprop="$property"> | <span itemscope itemtype="http://schema.org/$scope" itemprop="$property"> | ||
$content | $content | ||
</span> | </span> | ||
| Line 197: | Line 197: | ||
<br> | <br> | ||
<code>'''$microdata = JMicrodata($type = "", $flag = true);'''</code><br> | <code>'''$microdata = JMicrodata($type = "", $flag = true);'''</code><br> | ||
Crea una nueva instancia de la clase ''JMicrodata'' y configura el '' | 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. | ||
<br> | <br> | ||
<br> | <br> | ||
| Line 209: | Line 209: | ||
<br> | <br> | ||
<code>'''$microdata->setType($type);'''</code><br> | <code>'''$microdata->setType($type);'''</code><br> | ||
Establece un nuevo '' | Establece un nuevo ''Type'' de Schema.org, también hay una función $microdata->getType() para recuperar el ''Type'' actual. | ||
<br> | <br> | ||
<br> | <br> | ||
<code>'''$microdata->property($name);'''</code><br> | <code>'''$microdata->property($name);'''</code><br> | ||
Configura '' | Configura ''Property'', si está disponible en el ámbito del ''Type'' actual, también hay una función $microdata->getProperty() para recuperar ''Property''. | ||
<br> | <br> | ||
<br> | <br> | ||
<code>'''$microdata->content($value, $machineValue = null);'''</code><br> | <code>'''$microdata->content($value, $machineValue = null);'''</code><br> | ||
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. | |||
<br> | <br> | ||
<br> | <br> | ||
<code>'''$microdata->fallback($type, $property);'''</code> | <code>'''$microdata->fallback($type, $property);'''</code> | ||
<br> | <br>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. | ||
<br> | <br> | ||
<br> | <br> | ||
<code>'''$microdata->displayScope();'''</code><br> | <code>'''$microdata->displayScope();'''</code><br> | ||
Devuelve: | |||
<source lang="php"> | <source lang="php"> | ||
| Line 231: | Line 231: | ||
</source> | </source> | ||
el código HTML del ''Scope'' del ''Type'' actual, debe estar inserto dentro de un elemento etiqueta. | |||
<code>'''$microdata->display($displayType = "", $emptyOutput = false);'''</code> | <code>'''$microdata->display($displayType = "", $emptyOutput = false);'''</code> | ||
Devuelve los Microdatos HTML, si ''Property'' no está disponible verifica un Retroceso, de lo contrario devuelve ''. | |||
Hay 4 tipos de $displayType: | |||
* inline | * inline | ||
* span | * span | ||
| Line 242: | Line 242: | ||
* meta | * meta | ||
<u> | <u>Este método contiene la lógica de visualización HTML de los Microdatos</u>, | ||
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 → | * nested → ejemplo: | ||
<source lang="php"> | <source lang="php"> | ||
itemprop="$property" itemscope itemtype="http://schema.org/$scope</source> | itemprop="$property" itemscope itemtype="http://schema.org/$scope"</source> | ||
si también hay disponible un $content será la salida | |||
<source lang="php"> | <source lang="php"> | ||
<span itemprop="$property" itemscope itemtype="http://schema.org/$scope">$content</span></source> | <span itemprop="$property" itemscope itemtype="http://schema.org/$scope">$content</span></source> | ||
* meta → | * meta → ejemplo: | ||
<source lang="php"> | <source lang="php"> | ||
<meta content="$content" itemprop="$property"></source> | <meta content="$content" itemprop="$property"></source> | ||
si no hay $content está disponible será la salida | |||
<source lang="php"> | <source lang="php"> | ||
itemprop="$property"</source> | itemprop="$property"</source> | ||
* normal → | * normal → ejemplo: | ||
<source lang="php"> | <source lang="php"> | ||
itemprop="$property"</source> | itemprop="$property"</source> | ||
si también hay disponible un $content será la salida | |||
<source lang="php"> | <source lang="php"> | ||
<span itemprop="$property">$content</span></source> | <span itemprop="$property">$content</span></source> | ||
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 == | ||
* [[S:MyLanguage/How To Implement Rich Snippet for Breadcrumbs| | * [[S:MyLanguage/How To Implement Rich Snippet for Breadcrumbs|Cómo Implementar fragmentos enriquecidos para la Ruta de navegación]] | ||
<noinclude> | <noinclude> | ||
[[Category:Search Engine Optimisation]] | [[Category:Search Engine Optimisation/es]] | ||
</noinclude> | </noinclude> | ||
Latest revision as of 13:02, 6 May 2020
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) 6 years ago. (Purge)
¿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!
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:
- Tener la posibilidad de cambiar el Tipo de Microdatos dinámicamente, precisamente tu cambias el Tipo (hay 558 tipos, diferentes, disponibles).
- Mostrar la semántica validada, la biblioteca se encarga de mostrar los datos correctamente.
- Activar/desactivar los microdatos la semántica.
- 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