⬢ HTML meta tags generator for Kirby. Supports Open Graph and Twitter Cards out of the box.
MIT License
This version adds support to Kirby 3. All options remain and work in the same way as they did in Kirby 2.
For Kirby 2, you can download the plugin v1.1.1 and install it manually in the site/plugins/meta-tags.
Support for JSON-LD schema:
'json-ld' => [
'Organization' => [
'name' => $site->title()->value(),
'url' => $site->url(),
"contactPoint" => [
'@type' => 'ContactPoint',
'telephone' => $site->phoneNumber()->value(),
'contactType' => 'customer service'
]
]
]
Support for rendering one tag or a specific group of tags:
<?php echo $page->metaTags('title') ?>
// or passing an array
<?php echo $page->metaTags(['og', 'twitter', 'json-ld']) ?>
The previous version has been stable enough and no issue has been reported in 8 months 😃
I finally got time to make some improvements and update the documentation so it's time to release v1.0.0.
Options meta-tags.default
and meta-tags.templates
can now return a closure
which receives $page
and $site
as arguments:
c::set('meta-tags.default', function(Page $page, Site $site) {
return [
'title' => $site->title(),
'meta' => [
'description' => $site->description()
],
'link' => [
'canonical' => $page->url()
],
'og' => [
'title' => $page->isHomePage()
? $site->title()
: $page->title(),
'type' => 'website',
'site_name' => $site->title(),
'url' => $page->url()
]
];
});
Closures in other places now receive $site
and second argument as well:
'link' => [
'canonical' => $page->url(),
'alternate' => function(Page $page, Site $site) {
$locales = [];
foreach ($site->languages() as $language) {
if ($language->isDefault()) continue;
$locales[] = [
'hreflang' => $language->code(),
'href' => $page->url($language->code())
];
}
return $locales;
}
],
Besides offering a better workflow, these changes also help avoid an issue where site()
can't be called outside a closure from the config file in multi-language websites, as reported at getkirby/kirby#606.
The plugin has gone under heavy refactor and is no longer focused only on Open Graph. For that reason the name has changed from Open Graph to Meta Tags.
Although this is a beta release, it is considered stable and should cover most use cases, even complex ones.
Published by pedroborges over 7 years ago