Salta ai contenuti

Classe XMF Metagen

La classe Metagen nel Framework XMF fornisce un toolkit completo per la generazione e la gestione di tag HTML meta, tag Open Graph e altri metadati legati all’SEO.

La classe Metagen gestisce:

  • Tag HTML meta standard (descrizione, parole chiave, ecc.)
  • Tag meta Open Graph per la condivisione sociale
  • Tag Twitter Card
  • Dati strutturati e JSON-LD
  • URL canonici
  • Specifiche di lingua e locale
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();
// Imposta i tag meta di base
$metagen->setDescription('This is my awesome website');
$metagen->setKeywords('php, xoops, web development');
// Renderizza in HTML
echo $metagen->renderAll();
// Output:
// <meta name="description" content="This is my awesome website" />
// <meta name="keywords" content="php, xoops, web development" />

I tag Open Graph aiutano a controllare come il contenuto appare quando condiviso sui social media.

$metagen = new Metagen();
$metagen->setOpenGraphProperty('og:title', 'My Awesome Article');
$metagen->setOpenGraphProperty('og:description', 'Learn how to use Metagen for 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 fornisce dati strutturati che i motori di ricerca possono comprendere meglio.

$metagen = new Metagen();
$articleData = [
'@context' => 'https://schema.org',
'@type' => 'Article',
'headline' => 'Understanding XOOPS 4.0',
'description' => 'A comprehensive guide to XOOPS modernization',
'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();
}
// Inizializza Metagen
$metagen = new Metagen();
// Imposta i metadati dell'articolo
$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 Canonico
$metagen->setCanonicalUrl($article->getUrl());
// Memorizza nel template
$this->template['metagen'] = $metagen;
return $this->render('article/view.php');
}
}
<!-- Nel header del tuo template -->
<?php if (isset($metagen)): ?>
<?php echo $metagen->renderAll(); ?>
<?php endif; ?>
<!-- Struttura HTML standard -->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<?php echo $metagen->renderAll(); ?>
<title><?php echo $metagen->getTitle(); ?></title>
</head>
<body>
<!-- Contenuto -->
</body>
</html>
  1. Descrizioni uniche per ogni pagina (150-160 caratteri)
  2. Parole chiave rilevanti (5-10 parole chiave primarie per pagina)
  3. URL canonici per prevenire il contenuto duplicato
  4. Tag Open Graph per l’ottimizzazione dei social media
  5. Dati strutturati per i risultati di ricerca migliorati
  6. Meta tag viewport mobile per il design reattivo
$metagen = new Metagen();
// Tag meta di base
$metagen->setTitle('My Website - Web Development Services');
$metagen->setDescription('Professional web development services');
$metagen->setKeywords('web development, php, xoops');
$metagen->setAuthor('John Developer');
$metagen->setLanguage('en');
// URL Canonico
$metagen->setCanonicalUrl('https://example.com/services/web-development');
// Open Graph per la condivisione sui social
$metagen->setOpenGraphProperty('og:title', 'Web Development Services');
$metagen->setOpenGraphProperty('og:description', 'Professional services');
$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', 'Web Development Services');
$metagen->setTwitterProperty('twitter:image', 'https://example.com/twitter-image.jpg');
echo $metagen->renderAll();
MetodoParametriRitornaDescrizione
setTitle()stringselfImposta il titolo della pagina
setDescription()stringselfImposta la meta descrizione
setKeywords()stringselfImposta le meta parole chiave
setAuthor()stringselfImposta il nome dell’autore
setCanonicalUrl()stringselfImposta l’URL canonico
setLanguage()stringselfImposta la lingua della pagina
setViewport()stringselfImposta le impostazioni del viewport
setOpenGraphProperty()string, stringselfAggiungi tag OG
setTwitterCard()stringselfImposta il tipo di Twitter card
setJsonLd()arrayselfImposta i dati strutturati
renderAll()-stringRenderizza tutti i tag meta
  • Database - Riferimento database XMF
  • JWT - Autenticazione JWT in XMF
  • ../../03-Module-Development/Best-Practices/Frontend-Integration - Migliori pratiche di integrazione frontend
  • Introdotto: XOOPS 2.5.8
  • Ultimo Aggiornamento: XOOPS 4.0
  • Compatibilità: PHP 7.4+