Перейти до вмісту

XMF Метагенний клас

Клас Metagen у XMF Framework надає повний набір інструментів для генерації та керування мета-тегами HTML, тегами Open Graph та іншими пов’язаними з SEO метаданими.

Клас Metagen керує:

  • Стандартні метатеги HTML (опис, ключові слова тощо) — Мета-теги Open Graph для спільного використання в соціальних мережах
  • Мета-теги Twitter Card
  • Структуровані дані та JSON-LD
  • Канонічні URL-адреси
  • Специфікації мови та локалі

Базова структура класу

Section titled “Базова структура класу”
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();
// Set basic meta tags
$metagen->setDescription('This is my awesome website');
$metagen->setKeywords('php, xoops, web development');
// Render to HTML
echo $metagen->renderAll();
// Output:
// <meta name="description" content="This is my awesome website" />
// <meta name="keywords" content="php, xoops, web development" />

Теги Open Graph допомагають контролювати, як вміст відображається під час поширення в соціальних мережах.

Базове налаштування відкритого графіка

Section titled “Базове налаштування відкритого графіка”
$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

Section titled “Структуровані дані та JSON-LD”

JSON-LD надає структуровані дані, які пошукові системи можуть краще зрозуміти.

Структуровані дані статті

Section titled “Структуровані дані статті”
$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();

Приклади інтеграції модуля

Section titled “Приклади інтеграції модуля”
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');
}
}
<!-- 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>
  1. Унікальні описи для кожної сторінки (150-160 символів)
  2. Релевантні ключові слова (5-10 основних ключових слів на сторінку)
  3. Канонічні URL-адреси для запобігання повторюваного вмісту
  4. Відкриті теги Graph для оптимізації соціальних мереж
  5. Структуровані дані для покращених результатів пошуку
  6. Метатег Mobile viewport для адаптивного дизайну

Завершено SEO Впровадження

Section titled “Завершено SEO Впровадження”
$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();
МетодПараметриПоверненняОпис
setTitle()рядоксамостійноУстановити назву сторінки
setDescription()рядоксамостійноУстановити метаопис
setKeywords()рядоксамостійноВстановити мета-ключові слова
setAuthor()рядоксамостійноВстановити ім’я автора
setCanonicalUrl()рядоксамостійноНабір канонічний URL
setLanguage()рядоксамостійноВстановити мову сторінки
setViewport()рядоксамостійноВстановити параметри вікна перегляду
setOpenGraphProperty()рядок, рядоксамостійноДодати тег OG
setTwitterCard()рядоксамостійноУстановити тип картки Twitter
setJsonLd()масивсамостійноНабір структурованих даних
renderAll()-рядокВідобразити всі метатеги

Пов’язана документація

Section titled “Пов’язана документація”
  • База даних - XMF посилання на базу даних
  • JWT - JWT аутентифікація в XMF
  • ../../03-Module-Development/Best-Practices/Frontend-Integration - Найкращі методи інтеграції зовнішнього інтерфейсу