From f896c3df6a75ca35ce5da69f5ddb30dc75d6d768 Mon Sep 17 00:00:00 2001 From: Georg Ringer <georg.ringer@gmail.com> Date: Tue, 11 Jun 2024 18:49:01 +0200 Subject: [PATCH] [TASK] Render meta tag twitter:card only if required Instead of rendering the tag meta tag `twitter:card` always it is now only rendered if either one of the twitter fields is filled or the twitter card attribute is selected in the page record. Additionally the default value is now set to an empty string This leads to one markup line less for most of the pages. Resolves: #101621 Releases: main Change-Id: I55061debc4425d8c2207efec7ee5c5d376a83ca3 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84622 Tested-by: Garvin Hicking <gh@faktor-e.de> Reviewed-by: Benni Mack <benni@typo3.org> Tested-by: core-ci <typo3@b13.com> Reviewed-by: Garvin Hicking <gh@faktor-e.de> Tested-by: Benni Mack <benni@typo3.org> --- ...hangedDefaultValueForTwitter_cardField.rst | 25 +++++++++++++++++++ .../seo/Classes/MetaTag/MetaTagGenerator.php | 13 +++++++--- .../seo/Configuration/TCA/Overrides/pages.php | 3 ++- 3 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 typo3/sysext/core/Documentation/Changelog/13.2/Important-101621-ChangedDefaultValueForTwitter_cardField.rst diff --git a/typo3/sysext/core/Documentation/Changelog/13.2/Important-101621-ChangedDefaultValueForTwitter_cardField.rst b/typo3/sysext/core/Documentation/Changelog/13.2/Important-101621-ChangedDefaultValueForTwitter_cardField.rst new file mode 100644 index 000000000000..8b0afadfc8a9 --- /dev/null +++ b/typo3/sysext/core/Documentation/Changelog/13.2/Important-101621-ChangedDefaultValueForTwitter_cardField.rst @@ -0,0 +1,25 @@ +.. include:: /Includes.rst.txt + +.. _important-101621-1718125029: + +================================================================= +Important: #101621 - Changed default value for twitter_card field +================================================================= + +See :issue:`101621` + +Description +=========== + +The default value of the field `twitter_card` of a page is now an empty string instead of `summary`. + +Only if one of the following fields is filled, the meta tag :html:`<meta name="twitter:card">` is rendered. + +- `twitter_title` +- `twitter_description` +- `twitter_image` +- `twitter_card` + +If no twitter card is selected, the fallback value is `summary`. + +.. index:: Frontend, ext:seo diff --git a/typo3/sysext/seo/Classes/MetaTag/MetaTagGenerator.php b/typo3/sysext/seo/Classes/MetaTag/MetaTagGenerator.php index 3db1110ae1ca..f191639e4c46 100644 --- a/typo3/sysext/seo/Classes/MetaTag/MetaTagGenerator.php +++ b/typo3/sysext/seo/Classes/MetaTag/MetaTagGenerator.php @@ -88,15 +88,15 @@ readonly class MetaTagGenerator } } - $manager = $this->metaTagManagerRegistry->getManagerForProperty('twitter:card'); - $manager->addProperty('twitter:card', $pageRecord['twitter_card'] ?: 'summary'); - + $twitterCardTagRequired = false; if (!empty($pageRecord['twitter_title'])) { + $twitterCardTagRequired = true; $manager = $this->metaTagManagerRegistry->getManagerForProperty('twitter:title'); $manager->addProperty('twitter:title', $pageRecord['twitter_title']); } if (!empty($pageRecord['twitter_description'])) { + $twitterCardTagRequired = true; $manager = $this->metaTagManagerRegistry->getManagerForProperty('twitter:description'); $manager->addProperty('twitter:description', $pageRecord['twitter_description']); } @@ -108,6 +108,7 @@ readonly class MetaTagGenerator $twitterImages = $this->generateSocialImages($fileCollector->getFiles()); foreach ($twitterImages as $twitterImage) { + $twitterCardTagRequired = true; $subProperties = []; if (!empty($twitterImage['alternative'])) { @@ -122,6 +123,12 @@ readonly class MetaTagGenerator } } + $twitterCard = $pageRecord['twitter_card'] ?: ($twitterCardTagRequired ? 'summary' : ''); + if (!empty($twitterCard)) { + $manager = $this->metaTagManagerRegistry->getManagerForProperty('twitter:card'); + $manager->addProperty('twitter:card', $twitterCard); + } + $noIndex = ($pageRecord['no_index']) ? 'noindex' : 'index'; $noFollow = ($pageRecord['no_follow']) ? 'nofollow' : 'follow'; diff --git a/typo3/sysext/seo/Configuration/TCA/Overrides/pages.php b/typo3/sysext/seo/Configuration/TCA/Overrides/pages.php index 7d2fca73eab5..7aa47f77a6c1 100644 --- a/typo3/sysext/seo/Configuration/TCA/Overrides/pages.php +++ b/typo3/sysext/seo/Configuration/TCA/Overrides/pages.php @@ -265,8 +265,9 @@ $tca = [ 'config' => [ 'type' => 'select', 'renderType' => 'selectSingle', - 'default' => 'summary', + 'default' => '', 'items' => [ + ['label' => '', 'value' => ''], ['label' => 'LLL:EXT:seo/Resources/Private/Language/locallang_tca.xlf:pages.twitter_card.summary', 'value' => 'summary'], ['label' => 'LLL:EXT:seo/Resources/Private/Language/locallang_tca.xlf:pages.twitter_card.summary_large_image', 'value' => 'summary_large_image'], ], -- GitLab