arillo/silverstripe-metatags

Metatags for SilverStripe

Maintainers

Package info

github.com/arillo/silverstripe-metatags

Type:silverstripe-vendormodule

pkg:composer/arillo/silverstripe-metatags

Statistics

Installs: 888

Dependents: 0

Suggesters: 0

Stars: 2

Open Issues: 1

3.0.2 2026-05-12 10:13 UTC

README

Latest Stable Version   Total Downloads

Better metatags for your SilverStripe Projects.

The module will add a $MetaImage to each page and a fallback $MetaImage to the $SiteConfig that will be used if no image is defined on a particular page (to avoid this behavior do not fill in the $SiteConfig.MetaImage in the CMS). It will automatically generate OpenGraph and Twitter meta tags based on pages $MetaDescription.

Requirements

CMS version Branch / version
SilverStripe CMS ^6 master (3.x-dev) — you are here
SilverStripe CMS ^4 || ^5 2.x
SilverStripe CMS ^3 1.x

PHP ^8.3 required for the SS6 master line.

Usage

Install with composer:

composer require arillo/silverstripe-metatags

or clone the repo:

git clone git@github.com:arillo/silverstripe-metatags.git

Configure the extension:

Arillo\MetaTags\MetaTagsExtension:
  titles_by_pagetype:
    Default: <% if $MetaTitle %>$MetaTitle<% else %>$Title<% end_if %> / $SiteConfig.Title # Define the default <title> tag pattern. (Defaults to $Title)
    HomePage: <% if $MetaTitle %>$MetaTitle<% else %>$Title<% end_if %>                    # Exception for the HomePage page-type
    ProductsPage: $Item.Title           # Pattern for a DataObject

Include the template in your <head>:

<head>
  $MetaTagsX
</head>

Be sure not to include $MetaTags in your <head>, the module includes it in the default template. To customize the rendering of the metatags copy the template MetaTagsX.ss to your project theme.

Why the X? Because $MetaTags was taken by the SilverStripe default metatags =).

Recommended

Move the MetaDescription field inside the Meta Tab:

<?php
use Arillo\MetaTags\MetaTagsExtension;
class Page extends SiteTree
{
    public function getCMSFields() {
        // move meta fields
        return MetaTagsExtension::prepare_cms_fields(parent::getCMSFields());
    }
}