From cf749330ebc8516fb9724f1da28c401049f6f7c9 Mon Sep 17 00:00:00 2001
From: Kevin Appelt <kevin.appelt@icloud.com>
Date: Thu, 13 Jun 2024 16:06:31 +0200
Subject: [PATCH] [BUGFIX] Check open graph to decide if twitter:card should be
 added

Resolves: #104097
Related: #101621
Releases: main
Change-Id: Ib7265a64477dd99f4c511eb859e7e4859564c3cd
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84700
Tested-by: Garvin Hicking <gh@faktor-e.de>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Garvin Hicking <gh@faktor-e.de>
Tested-by: core-ci <typo3@b13.com>
---
 ...rtant-101621-ChangedDefaultValueForTwitter_cardField.rst | 3 +++
 typo3/sysext/seo/Classes/MetaTag/MetaTagGenerator.php       | 6 +++++-
 2 files changed, 8 insertions(+), 1 deletion(-)

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
index 8b0afadfc8a9..8bec27f5564e 100644
--- 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
@@ -19,6 +19,9 @@ Only if one of the following fields is filled, the meta tag :html:`<meta name="t
 - `twitter_description`
 - `twitter_image`
 - `twitter_card`
+- `og_title`
+- `og_description`
+- `og_image`
 
 If no twitter card is selected, the fallback value is `summary`.
 
diff --git a/typo3/sysext/seo/Classes/MetaTag/MetaTagGenerator.php b/typo3/sysext/seo/Classes/MetaTag/MetaTagGenerator.php
index f191639e4c46..596d199e0522 100644
--- a/typo3/sysext/seo/Classes/MetaTag/MetaTagGenerator.php
+++ b/typo3/sysext/seo/Classes/MetaTag/MetaTagGenerator.php
@@ -46,6 +46,8 @@ readonly class MetaTagGenerator
      */
     public function generate(array $params)
     {
+        $twitterCardTagRequired = false;
+
         /** @var ServerRequestInterface $request */
         $request = $params['request'];
         $pageRecord = $request->getAttribute('frontend.page.information')->getPageRecord();
@@ -55,11 +57,13 @@ readonly class MetaTagGenerator
         }
 
         if (!empty($pageRecord['og_title'])) {
+            $twitterCardTagRequired = true;
             $manager = $this->metaTagManagerRegistry->getManagerForProperty('og:title');
             $manager->addProperty('og:title', $pageRecord['og_title']);
         }
 
         if (!empty($pageRecord['og_description'])) {
+            $twitterCardTagRequired = true;
             $manager = $this->metaTagManagerRegistry->getManagerForProperty('og:description');
             $manager->addProperty('og:description', $pageRecord['og_description']);
         }
@@ -71,6 +75,7 @@ readonly class MetaTagGenerator
 
             $ogImages = $this->generateSocialImages($fileCollector->getFiles());
             foreach ($ogImages as $ogImage) {
+                $twitterCardTagRequired = true;
                 $subProperties = [];
                 $subProperties['url'] = $ogImage['url'];
                 $subProperties['width'] = $ogImage['width'];
@@ -88,7 +93,6 @@ readonly class MetaTagGenerator
             }
         }
 
-        $twitterCardTagRequired = false;
         if (!empty($pageRecord['twitter_title'])) {
             $twitterCardTagRequired = true;
             $manager = $this->metaTagManagerRegistry->getManagerForProperty('twitter:title');
-- 
GitLab