Ir al contenido

Clase XMF Metagen

La clase Metagen en el Marco XMF proporciona un conjunto de herramientas integral para generar y gestionar etiquetas meta HTML, etiquetas Open Graph y otros metadatos relacionados con SEO.

La clase Metagen maneja:

  • Etiquetas meta HTML estándar (descripción, palabras clave, etc.)
  • Etiquetas meta Open Graph para compartir en redes sociales
  • Etiquetas Twitter Card
  • Datos estructurados y JSON-LD
  • URLs canónicas
  • Especificaciones de idioma y locales
namespace Xmf;
class Metagen
{
protected $meta = [];
protected $ogTags = [];
protected $twitterTags = [];
protected $jsonLd = [];
protected $canonicalUrl;
protected $language;
public function __construct() {}
public function setDescription(string $description): self {}
public function setKeywords(string $keywords): self {}
public function renderAll(): string {}
}
use Xmf\Metagen;
$metagen = new Metagen();
// Establecer etiquetas meta básicas
$metagen->setDescription('Este es mi sitio web impresionante');
$metagen->setKeywords('php, xoops, desarrollo web');
// Renderizar a HTML
echo $metagen->renderAll();
// Salida:
// <meta name="description" content="Este es mi sitio web impresionante" />
// <meta name="keywords" content="php, xoops, desarrollo web" />

Las etiquetas Open Graph ayudan a controlar cómo aparece el contenido cuando se comparte en redes sociales.

$metagen = new Metagen();
$metagen->setOpenGraphProperty('og:title', 'Mi Artículo Impresionante');
$metagen->setOpenGraphProperty('og:description', 'Aprenda cómo usar Metagen para SEO');
$metagen->setOpenGraphProperty('og:image', 'https://example.com/image.jpg');
$metagen->setOpenGraphProperty('og:url', 'https://example.com/article');
$metagen->setOpenGraphProperty('og:type', 'article');
echo $metagen->renderAll();

JSON-LD proporciona datos estructurados que los motores de búsqueda pueden entender mejor.

$metagen = new Metagen();
$articleData = [
'@context' => 'https://schema.org',
'@type' => 'Article',
'headline' => 'Entendiendo XOOPS 4.0',
'description' => 'Una guía completa de la modernización de XOOPS',
'image' => 'https://example.com/article.jpg',
'datePublished' => '2026-01-31T10:00:00Z',
'dateModified' => '2026-01-31T15:00:00Z',
'author' => [
'@type' => 'Person',
'name' => 'John Developer',
'url' => 'https://example.com/author'
]
];
$metagen->setJsonLd($articleData);
echo $metagen->renderAll();
namespace MyModule\Controller;
use Xmf\Metagen;
use MyModule\Repository\ArticleRepository;
class ArticleController
{
public function viewAction($id)
{
$repository = new ArticleRepository();
$article = $repository->getById($id);
if (!$article) {
return $this->notFound();
}
// Inicializar Metagen
$metagen = new Metagen();
// Establecer metadatos del artículo
$metagen->setTitle($article->getTitle());
$metagen->setDescription(
substr($article->getBody(), 0, 160)
);
$metagen->setKeywords(
implode(', ', $article->getTags())
);
$metagen->setAuthor($article->getAuthorName());
// Open Graph
$metagen->setOpenGraphProperty('og:type', 'article');
$metagen->setOpenGraphProperty('og:title', $article->getTitle());
$metagen->setOpenGraphProperty('og:description', $article->getExcerpt());
$metagen->setOpenGraphProperty('og:image', $article->getFeaturedImage());
$metagen->setOpenGraphProperty('og:url', $article->getUrl());
// URL canónica
$metagen->setCanonicalUrl($article->getUrl());
// Almacenar en plantilla
$this->template['metagen'] = $metagen;
return $this->render('article/view.php');
}
}
<!-- En su encabezado de plantilla -->
<?php if (isset($metagen)): ?>
<?php echo $metagen->renderAll(); ?>
<?php endif; ?>
<!-- Estructura HTML estándar -->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<?php echo $metagen->renderAll(); ?>
<title><?php echo $metagen->getTitle(); ?></title>
</head>
<body>
<!-- Contenido -->
</body>
</html>
  1. Descripciones únicas para cada página (150-160 caracteres)
  2. Palabras clave relevantes (5-10 palabras clave primarias por página)
  3. URLs canónicas para prevenir contenido duplicado
  4. Etiquetas Open Graph para optimización de redes sociales
  5. Datos estructurados para resultados de búsqueda mejorados
  6. Etiqueta meta viewport para diseño responsivo
$metagen = new Metagen();
// Etiquetas meta básicas
$metagen->setTitle('Mi Sitio Web - Servicios de Desarrollo Web');
$metagen->setDescription('Servicios profesionales de desarrollo web');
$metagen->setKeywords('desarrollo web, php, xoops');
$metagen->setAuthor('John Developer');
$metagen->setLanguage('es');
// URL canónica
$metagen->setCanonicalUrl('https://example.com/services/web-development');
// Open Graph para compartir en redes sociales
$metagen->setOpenGraphProperty('og:title', 'Servicios de Desarrollo Web');
$metagen->setOpenGraphProperty('og:description', 'Servicios profesionales');
$metagen->setOpenGraphProperty('og:image', 'https://example.com/og-image.jpg');
$metagen->setOpenGraphProperty('og:url', 'https://example.com/services/web-development');
$metagen->setOpenGraphProperty('og:type', 'website');
// Twitter Card
$metagen->setTwitterCard('summary_large_image');
$metagen->setTwitterProperty('twitter:site', '@mycompany');
$metagen->setTwitterProperty('twitter:title', 'Servicios de Desarrollo Web');
$metagen->setTwitterProperty('twitter:image', 'https://example.com/twitter-image.jpg');
echo $metagen->renderAll();
MétodoParámetrosDevuelveDescripción
setTitle()stringselfEstablecer título de página
setDescription()stringselfEstablecer descripción meta
setKeywords()stringselfEstablecer palabras clave meta
setAuthor()stringselfEstablecer nombre del autor
setCanonicalUrl()stringselfEstablecer URL canónica
setLanguage()stringselfEstablecer idioma de página
setViewport()stringselfEstablecer configuración de viewport
setOpenGraphProperty()string, stringselfAgregar etiqueta OG
setTwitterCard()stringselfEstablecer tipo de Twitter Card
setJsonLd()arrayselfEstablecer datos estructurados
renderAll()-stringRenderizar todas las etiquetas meta
  • Database - Referencia de base de datos XMF
  • JWT - Autenticación JWT en XMF
  • ../../03-Module-Development/Best-Practices/Frontend-Integration - Mejores prácticas de integración de frontend
  • Introducido: XOOPS 2.5.8
  • Última Actualización: XOOPS 4.0
  • Compatibilidad: PHP 7.4+