Automatic functionality for records

What does the automatic functionality do?

By using the automatic functionality the following will be added to your records:

  • Backend:
    • Fields of the core SEO extension:
      • SEO title
      • Robots: Index this page, Follow this page
      • Opengraph fields: Title, Description, Image
      • Twitter fields: Title, Description, Image, Card
      • Canonical link
      • Sitemap: Change frequency, Priority
    • Functionality of Yoast SEO:
      • Snippet preview
      • Title and Description progress bar
      • Readability Analysis
      • SEO Analysis
      • Focus keyword
      • Advanced robots: Image index, Archive, Snippet
  • Frontend:
    • Metatag tags:
      • Description
      • Opengraph
      • Twitter
      • Robots
    • Canonical generation
    • Page title based on SEO Title and Title field

Configuration for a record

To get all the functionality mentioned above you only have to set the table name and the GET parameters on which it responds to. This should be placed in a file within Configuration/TCA/Overrides of your extension (f.e. sitepackage):

<?php

\YoastSeoForTypo3\YoastSeo\Utility\RecordUtility::configureForRecord('tx_extension_record')
     ->setGetParameters([
         ['tx_extension_pi1', 'record']
     ]);
Copied!

This will automatically set the TCA, Database fields and activate the frontend functionality.

Configuration options

The method configureRecord returns an object which has the following methods:

setGetParameters

Datatype
array
Default
none
Description
The GET parameters on where the frontend functionality should be activated. This should be a multidimensional array, which gives you the possibility to react to multiple situations.

Example

->setGetParameters([
   ['tx_extension_pi1', 'record'],
   ['tx_extension_pi1', 'record_preview']
])
Copied!

setDefaultSeoFields

Datatype
boolean
Default
true
Description
This will define if the default fields from EXT:seo should be added.

setYoastSeoFields

Datatype
boolean
Default
true
Description
This will define if the fields from Yoast SEO should be added.

setSitemapFields

Datatype
boolean
Default
true
Description
This will define if the fields "Change frequency" and "Priority" for Sitemap should be added.

setTypes

Datatype
string
Default
empty (all types)
Description
Defines on which types of the record the fields should be added.

setTitleField

Datatype
string
Default
title
Description
Sets the title field to another column.

setDescriptionField

Datatype
string
Default
description
Description
Sets the description field to another column.

setAddDescriptionField

Datatype
boolean
Default
false
Description
Adds the description column to both TCA and database (in case there's none already).

setFieldsPosition

Datatype
string
Default
after:title
Description
Sets the position of the TCA fields.

setOverrideTca

Datatype
array
Default
none
Description
Override TCA of the complete table. This can be useful if you want to change something of the TCA of the EXT:seo or Yoast SEO fields. This is needed because the automatic TCA generation is executed after all generated TCA, so trying to add this to one of the Overrides files will not take effect.

Example

->setOverrideTca([
   'columns' => [
      'seo_title' => [
         'config' => [
            'max' => 100
         ]
      ]
   ]
])
Copied!

setGeneratePageTitle

Datatype
boolean
Default
true
Description
This will enable/disable the functionality of the Page Title Provider in the frontend.

setGenerateMetaTags

Datatype
boolean
Default
true
Description
This will enable/disable the rendering of the metatags in the frontend (in case you want to this yourself). This will not deactivate the canonical tag.

setGenerateRobotsTag

Datatype
boolean
Default
true
Description
This will enable/disable the rendering of the robots metatag in the frontend (in case you always want the robot settings from the page it's displayed on).

Example with EXT:news

EXT:news has his own sitemap fields and has multiple GET parameters to respond to. The basic configuration can be:

\YoastSeoForTypo3\YoastSeo\Utility\RecordUtility::configureForRecord('tx_news_domain_model_news')
     ->setGetParameters([
         ['tx_news_pi1', 'news'],
         ['tx_news_pi1', 'news_preview']
     ])
     ->setSitemapFields(false)
     ->setFieldsPosition('after:bodytext');
Copied!

Adding PageTsconfig

Make sure to add the needed PageTsconfig mentioned in Other Plugins