瀏覽代碼

Merge branch 'hotfix/complete_meta'

Olivier Massot 1 年之前
父節點
當前提交
39f73efd36

+ 7 - 0
ot_core/Classes/Service/OpentalentImageService.php

@@ -2,6 +2,7 @@
 
 namespace Opentalent\OtCore\Service;
 
+use Opentalent\OtCore\Exception\ApiRequestException;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 
 class OpentalentImageService
@@ -19,6 +20,12 @@ class OpentalentImageService
         $this->apiService = $apiService ?? GeneralUtility::makeInstance(OpentalentApiService::class);
     }
 
+    /**
+     * @param int $fileId
+     * @param string $size
+     * @return string
+     * @throws ApiRequestException
+     */
     public function getImageUrl(int $fileId, string $size = self::IMAGE_MD): string {
         if (!in_array($size, [self::IMAGE_SM, self::IMAGE_MD, self::IMAGE_LG])) {
             throw new \RuntimeException('Invalid $size : ' . $size);

+ 17 - 1
ot_templating/Classes/ViewHelpers/Image/GetSrcByIdViewHelper.php

@@ -3,6 +3,7 @@
 namespace Opentalent\OtTemplating\ViewHelpers\Image;
 
 
+use Opentalent\OtCore\Exception\ApiRequestException;
 use Opentalent\OtCore\Service\OpentalentImageService;
 use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 
@@ -48,6 +49,13 @@ class GetSrcByIdViewHelper extends OtAbstractViewHelper
             false,
             'md'
         );
+        $this->registerArgument(
+            'default',
+            'string',
+            'The src of the image if the file is not found',
+            false,
+            ''
+        );
     }
 
     /**
@@ -59,7 +67,15 @@ class GetSrcByIdViewHelper extends OtAbstractViewHelper
     public function render() {
         $fileId = $this->arguments['fileId'];
         $size = $this->arguments['size'];
-        return $this->opentalentImageService->getImageUrl($fileId, $size);
+        $default = $this->arguments['default'];
+
+        try {
+            return $this->opentalentImageService->getImageUrl($fileId, $size);
+        } catch (ApiRequestException $e) {
+            if ($e->getCode() === 404) {
+                return $default;
+            }
+        }
     }
 
 }

+ 15 - 0
ot_templating/Classes/ViewHelpers/Social/MetadataViewHelper.php

@@ -6,6 +6,7 @@ use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
 use FluidTYPO3\Vhs\ViewHelpers\Resource\Record\FalViewHelper;
 use Opentalent\OtCore\Exception\ApiRequestException;
 use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
+use Opentalent\OtCore\Website\OtWebsiteRepository;
 use TYPO3\CMS\Core\Database\ConnectionPool;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Extbase\Service\ImageService;
@@ -28,6 +29,10 @@ class MetadataViewHelper extends OtAbstractViewHelper
 {
     use TemplateVariableViewHelperTrait;
 
+    public function __construct(
+        private readonly OtWebsiteRepository $otWebsiteRepository,
+    ) {}
+
     /**
      * >> Required to prevent typo3 to escape the html output
      * @var boolean
@@ -111,8 +116,11 @@ class MetadataViewHelper extends OtAbstractViewHelper
         $uri = $GLOBALS['TYPO3_REQUEST']->getUri();
         $page = $GLOBALS['TSFE']->page;
 
+        $website = $this->otWebsiteRepository->getCurrentWebsiteFromFEGlobals();
+
         // Forced values registered with https://viewhelpers.fluidtypo3.org/fluidtypo3/vhs/5.0.1/Variable/Register/Set.html
         $registered = $GLOBALS["TSFE"]->register;
+        $forcedSiteName = ($registered['forceSocialWebsiteTitle'] ?? null);
         $forcedTitle = ($registered['forceSocialTitle'] ?? null);
         $forcedDescription = ($registered['forceSocialDescription'] ?? null);
         $forcedImageUrl = ($registered['forceSocialImageUrl'] ?? '');
@@ -122,6 +130,13 @@ class MetadataViewHelper extends OtAbstractViewHelper
             'domain' => $uri->getHost(),
         ];
 
+        // Determine OG website title
+        if ($forcedSiteName != null) {
+            $data['ogSiteName'] = $forcedTitle;
+        } else {
+            $data['ogSiteName'] = $website['organization_name'];
+        }
+
         // Determine OG title
         if ($forcedTitle != null) {
             $data['ogPageTitle'] = $forcedTitle;

+ 2 - 0
ot_templating/Resources/Private/Partials/Classic/MetaSocial.html

@@ -3,6 +3,8 @@
 
 <ot:social.metadata as="meta">
      <f:comment><!-- Facebook Meta Tags --></f:comment>
+     <v:page.header.meta property="name" content="{meta.ogSiteName}"/>
+     <v:page.header.meta property="og:site_name" content="{meta.ogSiteName}"/>
      <v:page.header.meta property="og:url" content="{meta.pageUrl}"/>
      <v:page.header.meta property="og:type" content="website"/>
      <v:page.header.meta property="og:title" content="{meta.ogPageTitle}"/>