XMF Metagen Class
The Metagen class in the XMF Framework provides a comprehensive toolkit for generating and managing HTML meta tags, Open Graph tags, and other SEO-related metadata.
Class Overview
Section titled “Class Overview”The Metagen class handles:
- Standard HTML meta tags (description, keywords, etc.)
- Open Graph meta tags for social sharing
- Twitter Card meta tags
- Structured data and JSON-LD
- Canonical URLs
- Language and locale specifications
Basic Class Structure
Section titled “Basic Class Structure”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 {}}Basic Usage
Section titled “Basic Usage”Simple Meta Tags
Section titled “Simple Meta Tags”use Xmf\Metagen;
$metagen = new Metagen();
// Set basic meta tags$metagen->setDescription('This is my awesome website');$metagen->setKeywords('php, xoops, web development');
// Render to HTMLecho $metagen->renderAll();
// Output:// <meta name="description" content="This is my awesome website" />// <meta name="keywords" content="php, xoops, web development" />Open Graph Meta Tags
Section titled “Open Graph Meta Tags”Open Graph tags help control how content appears when shared on social media.
Basic Open Graph Setup
Section titled “Basic Open Graph Setup”$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();Structured Data and JSON-LD
Section titled “Structured Data and JSON-LD”JSON-LD provides structured data that search engines can better understand.
Article Structured Data
Section titled “Article Structured Data”$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();Module Integration Examples
Section titled “Module Integration Examples”Blog/Article Module
Section titled “Blog/Article Module”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(); }
// Initialize Metagen $metagen = new Metagen();
// Set article metadata $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());
// Canonical URL $metagen->setCanonicalUrl($article->getUrl());
// Store in template $this->template['metagen'] = $metagen;
return $this->render('article/view.php'); }}Template Integration
Section titled “Template Integration”Template Implementation
Section titled “Template Implementation”<!-- In your template header --><?php if (isset($metagen)): ?> <?php echo $metagen->renderAll(); ?><?php endif; ?>
<!-- Standard HTML structure --><!DOCTYPE html><html><head> <meta charset="utf-8"> <?php echo $metagen->renderAll(); ?> <title><?php echo $metagen->getTitle(); ?></title></head><body> <!-- Content --></body></html>Best Practices
Section titled “Best Practices”SEO Optimization
Section titled “SEO Optimization”- Unique descriptions for each page (150-160 characters)
- Relevant keywords (5-10 primary keywords per page)
- Canonical URLs for preventing duplicate content
- Open Graph tags for social media optimization
- Structured data for enhanced search results
- Mobile viewport meta tag for responsive design
Complete SEO Implementation
Section titled “Complete SEO Implementation”$metagen = new Metagen();
// Basic meta tags$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');
// Canonical URL$metagen->setCanonicalUrl('https://example.com/services/web-development');
// Open Graph for social sharing$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();API Reference
Section titled “API Reference”Core Methods
Section titled “Core Methods”| Method | Parameters | Returns | Description |
|---|---|---|---|
setTitle() | string | self | Set page title |
setDescription() | string | self | Set meta description |
setKeywords() | string | self | Set meta keywords |
setAuthor() | string | self | Set author name |
setCanonicalUrl() | string | self | Set canonical URL |
setLanguage() | string | self | Set page language |
setViewport() | string | self | Set viewport settings |
setOpenGraphProperty() | string, string | self | Add OG tag |
setTwitterCard() | string | self | Set Twitter card type |
setJsonLd() | array | self | Set structured data |
renderAll() | - | string | Render all meta tags |
Related Documentation
Section titled “Related Documentation”- Database - XMF database reference
- JWT - JWT authentication in XMF
- ../../03-Module-Development/Best-Practices/Frontend-Integration - Frontend integration best practices
Resources
Section titled “Resources”Version Information
Section titled “Version Information”- Introduced: XOOPS 2.5.8
- Last Updated: XOOPS 4.0
- Compatibility: PHP 7.4+