Lewati ke konten

Kelas Metagen XMF

Kelas Metagen dalam Kerangka XMF menyediakan perangkat komprehensif untuk menghasilkan dan mengelola tag meta HTML, tag Grafik Terbuka, dan metadata terkait SEO lainnya.

Kelas Metagen menangani:

  • Tag meta HTML standar (deskripsi, kata kunci, dll.)
  • Buka tag meta Grafik untuk berbagi sosial
  • Tag meta Kartu Twitter
  • Data terstruktur dan JSON-LD
  • URL kanonik
  • Spesifikasi bahasa dan lokal
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" />

Tag Open Graph membantu mengontrol tampilan konten saat dibagikan di media sosial.

$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 menyediakan data terstruktur yang dapat lebih dipahami oleh mesin pencari.

$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();
}
// 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. Deskripsi unik untuk setiap halaman (150-160 karakter)
  2. Kata kunci yang relevan (5-10 kata kunci utama per halaman)
  3. URL Kanonis untuk mencegah duplikat konten
  4. Buka tag Grafik untuk pengoptimalan media sosial
  5. Data terstruktur untuk hasil penelusuran yang disempurnakan
  6. Tag meta Area pandang seluler untuk desain responsif
$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();
MetodeParameterPengembalianDeskripsi
setTitle()talidiriTetapkan judul halaman
setDescription()talidiriTetapkan deskripsi meta
setKeywords()talidiriTetapkan kata kunci meta
setAuthor()talidiriTetapkan nama penulis
setCanonicalUrl()talidiriSetel URL
setLanguage()talidiriTetapkan bahasa halaman
setViewport()talidiriTetapkan pengaturan area pandang
setOpenGraphProperty()tali, talidiriTambahkan tag OG
setTwitterCard()talidiriTetapkan jenis kartu Twitter
setJsonLd()susunandiriTetapkan data terstruktur
renderAll()-taliRender semua tag meta
  • Basis Data - Referensi basis data XMF
  • JWT - Otentikasi JWT di XMF
  • ../../03-Module-Development/Best-Practices/front-end-Integration - Praktik terbaik integrasi front-end
  • Diperkenalkan: XOOPS 2.5.8
  • Terakhir Diperbarui: XOOPS 4.0
  • Kompatibilitas: PHP 7.4+