Pular para o conteúdo

Classe XMF Metagen

A classe Metagen no XMF Framework fornece um kit de ferramentas abrangente para geração e gerenciamento de tags HTML meta, tags Open Graph e outro metadado relacionado a SEO.

A classe Metagen manipula:

  • Tags meta HTML padrão (description, keywords, etc.)
  • Tags meta Open Graph para compartilhamento social
  • Tags Twitter Card
  • Dados estruturados e JSON-LD
  • URLs canônicas
  • Especificações de linguagem e localidade
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();
// Definir tags meta básicas
$metagen->setDescription('Este é meu site incrível');
$metagen->setKeywords('php, xoops, desenvolvimento web');
// Renderizar para HTML
echo $metagen->renderAll();
// Saída:
// <meta name="description" content="Este é meu site incrível" />
// <meta name="keywords" content="php, xoops, desenvolvimento web" />

Tags Open Graph ajudam controlar como conteúdo aparece quando compartilhado em redes sociais.

$metagen = new Metagen();
$metagen->setOpenGraphProperty('og:title', 'Meu Artigo Incrível');
$metagen->setOpenGraphProperty('og:description', 'Aprenda como 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 fornece dados estruturados que mecanismos de busca podem entender melhor.

$metagen = new Metagen();
$articleData = [
'@context' => 'https://schema.org',
'@type' => 'Article',
'headline' => 'Entendendo XOOPS 4.0',
'description' => 'Um guia abrangente para modernização XOOPS',
'image' => 'https://example.com/article.jpg',
'datePublished' => '2026-01-31T10:00:00Z',
'dateModified' => '2026-01-31T15:00:00Z',
'author' => [
'@type' => 'Person',
'name' => 'João Desenvolvedor',
'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();
// Definir metadados de artigo
$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());
// Armazenar em template
$this->template['metagen'] = $metagen;
return $this->render('article/view.php');
}
}
<!-- No cabeçalho do seu template -->
<?php if (isset($metagen)): ?>
<?php echo $metagen->renderAll(); ?>
<?php endif; ?>
<!-- Estrutura HTML padrão -->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<?php echo $metagen->renderAll(); ?>
<title><?php echo $metagen->getTitle(); ?></title>
</head>
<body>
<!-- Conteúdo -->
</body>
</html>
  1. Descrições únicas para cada página (150-160 caracteres)
  2. Palavras-chave relevantes (5-10 palavras-chave primárias por página)
  3. URLs canônicas para prevenção de conteúdo duplicado
  4. Tags Open Graph para otimização de mídia social
  5. Dados estruturados para resultados de busca aprimorados
  6. Meta tag de viewport móvel para design responsivo
$metagen = new Metagen();
// Tags meta básicas
$metagen->setTitle('Meu Website - Serviços de Desenvolvimento Web');
$metagen->setDescription('Serviços profissionais de desenvolvimento web');
$metagen->setKeywords('desenvolvimento web, php, xoops');
$metagen->setAuthor('João Desenvolvedor');
$metagen->setLanguage('en');
// URL Canônica
$metagen->setCanonicalUrl('https://example.com/services/web-development');
// Open Graph para compartilhamento social
$metagen->setOpenGraphProperty('og:title', 'Serviços de Desenvolvimento Web');
$metagen->setOpenGraphProperty('og:description', 'Serviços profissionais');
$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', 'Serviços de Desenvolvimento Web');
$metagen->setTwitterProperty('twitter:image', 'https://example.com/twitter-image.jpg');
echo $metagen->renderAll();
MétodoParâmetrosRetornaDescrição
setTitle()stringselfDefinir título da página
setDescription()stringselfDefinir meta description
setKeywords()stringselfDefinir meta keywords
setAuthor()stringselfDefinir nome do autor
setCanonicalUrl()stringselfDefinir URL canônica
setLanguage()stringselfDefinir linguagem da página
setViewport()stringselfDefinir configurações de viewport
setOpenGraphProperty()string, stringselfAdicionar tag OG
setTwitterCard()stringselfDefinir tipo de Twitter card
setJsonLd()arrayselfDefinir dados estruturados
renderAll()-stringRenderizar todas as meta tags
  • Database - Referência de banco de dados XMF
  • JWT - Autenticação JWT em XMF
  • ../../03-Module-Development/Best-Practices/Frontend-Integration - Melhores práticas de integração frontend
  • Introduzido: XOOPS 2.5.8
  • Última Atualização: XOOPS 4.0
  • Compatibilidade: PHP 7.4+