Inserta datos estructurados en un Magento de una forma automatizada y efectiva con programación.
Una pregunta más de mi Discord.
Aguseze99:
Hola gente, feliz viernes. Como estan? Alguien sabe como agregar datos estructurados en magento, tiene que ser para todos los productos, no se si magento tiene algun apartado.
Carlos Sánchez:
Hola @aguseze99 yo en magento lo haría creando un módulo.
Este lo añades en el layout.xml correspondiente (suele ser catalog_product_view.xml)
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceContainer name="content">
<block class="Tu\Modulo\Block\DatosEstructuradosProducto" name="datos_estructurados_producto" template="Tu_Modulo::datos_estructurados_producto.phtml" after="-"/>
</referenceContainer>
</body>
</page>
Creas el bloque de php en el módulo correspondiente, te pongo un ejemplo:
namespace Tu\Modulo\Block;
class DatosEstructuradosProducto extends \Magento\Framework\View\Element\Template
{
protected $_product = null;
protected $_productRepository;
public function __construct(
\Magento\Backend\Block\Template\Context $context,
\Magento\Catalog\Model\ProductRepository $productRepository,
array $data = []
) {
$this->_productRepository = $productRepository;
parent::__construct($context, $data);
}
public function getProduct()
{
if ($this->_product === null) {
$id = $this->getRequest()->getParam('id');
$this->_product = $this->_productRepository->getById($id);
}
return $this->_product;
}
public function getJsonLdData()
{
$product = $this->getProduct();
// Aquí, construye tus datos estructurados basados en el producto
$datosEstructurados = [
"@context" => "https://schema.org/",
"@type" => "Product",
"name" => $product->getName(),
"description" => $product->getDescription(),
// Añade aquí más datos como reviews y ratings si están disponibles
];
return $datosEstructurados;
}
}
Luego lo añades en la plantilla .phtml y listo.
<script type="application/ld+json">
<?php echo json_encode($block->getJsonLdData()); ?>
</script>
Yo luego al final siempre lo acabo complicando un poco más añadiendo una maraña de condicionales pues por URL, por tipo de producto y por distintos factores (eso se ve en mi máster) dependiendo de cada caso, pero suele quedar limpio.
Te falta mi máster. Accede a una formación avanzada que te permitirá aplicar e implementar SEO en cualquier tipo de WEB
¡Accede al Máster de SEO Técnico!