From 57c8832849584a4fade022a1add440079ef8c11e Mon Sep 17 00:00:00 2001 From: Johannes Kreiner <johannes@sgalinski.de> Date: Wed, 25 May 2022 15:16:13 +0200 Subject: [PATCH] [BUGFIX][WIP] Add canonicals to pagination --- .../Controller/ListByCategoryController.php | 3 ++ Classes/Controller/OverviewController.php | 5 +++ Classes/Service/HeaderMetaDataService.php | 31 +++++++++++++++++++ 3 files changed, 39 insertions(+) diff --git a/Classes/Controller/ListByCategoryController.php b/Classes/Controller/ListByCategoryController.php index 2a1c961..d4547f5 100644 --- a/Classes/Controller/ListByCategoryController.php +++ b/Classes/Controller/ListByCategoryController.php @@ -120,6 +120,9 @@ class ListByCategoryController extends AbstractController { $filterByCategories = FALSE; $categoryUids = GeneralUtility::intExplode(',', $this->settings['categories']); $tagUids = GeneralUtility::intExplode(',', $this->settings['tags'], TRUE); + + HeaderMetaDataService::addPageNumberToCanonical($currentPageBrowserPage); + foreach ($categoryUids as $categoryUid) { if ($categoryUid > 0) { $filterByCategories = TRUE; diff --git a/Classes/Controller/OverviewController.php b/Classes/Controller/OverviewController.php index 5b00281..93a0d0b 100644 --- a/Classes/Controller/OverviewController.php +++ b/Classes/Controller/OverviewController.php @@ -34,6 +34,7 @@ use SGalinski\SgNews\Domain\Repository\TagRepository; use SGalinski\SgNews\Domain\Service\NewsService; use SGalinski\SgNews\Service\ConfigurationService; use SGalinski\SgNews\Service\HeaderMetaDataService; +use SGalinski\SgSeo\Service\HeadTagService; use TYPO3\CMS\Core\Http\ImmediateResponseException; use TYPO3\CMS\Core\Utility\ExtensionManagementUtility; use TYPO3\CMS\Core\Utility\GeneralUtility; @@ -137,6 +138,8 @@ class OverviewController extends AbstractController { $isCategoryFiltered = $useAllFilters || (int) $this->settings['groupBy'] === 1; $isTagFiltered = $useAllFilters || (int) $this->settings['groupBy'] === 2; + HeaderMetaDataService::addPageNumberToCanonical($currentPageBrowserPage); + // Get tag pid $tagPid = (int) $this->settings['tagPid']; if (!$tagPid) { @@ -418,6 +421,8 @@ class OverviewController extends AbstractController { $newsPerPage = (int) $this->settings['newsLimit']; $offset = $this->calculatePaginationOffset($currentPageBrowserPage, $newsPerPage); + HeaderMetaDataService::addPageNumberToCanonical($currentPageBrowserPage); + $newsCount = 0; $categoryIds = NULL; $categoriesById = []; diff --git a/Classes/Service/HeaderMetaDataService.php b/Classes/Service/HeaderMetaDataService.php index 807a64f..aa68689 100644 --- a/Classes/Service/HeaderMetaDataService.php +++ b/Classes/Service/HeaderMetaDataService.php @@ -26,7 +26,11 @@ namespace SGalinski\SgNews\Service; * This copyright notice MUST APPEAR in all copies of the script! ***************************************************************/ +use SGalinski\SgSeo\Service\HeadTagService; +use TYPO3\CMS\Core\Package\Exception; use TYPO3\CMS\Core\Resource\FileReference; +use TYPO3\CMS\Core\Utility\ExtensionManagementUtility; +use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController; /** @@ -44,4 +48,31 @@ class HeaderMetaDataService { $typoScriptController = $GLOBALS['TSFE']; $typoScriptController->page['og_image_path_by_extension'] = $path; } + + /** + * Adds the page number to the canonical + * + * @param int $currentPage + * @return void + * @throws Exception + */ + public static function addPageNumberToCanonical(int $currentPage): void { + if ($currentPage < 1) { + return; + } + + if (version_compare(ExtensionManagementUtility::getExtensionVersion('sg_seo'), '5.0.0', '>=')) { + $headTagService = GeneralUtility::makeInstance( + HeadTagService::class, + FALSE, + '', + '', + '&tx_sgnews_pagebrowser[currentPage]=' . $currentPage + ); + $headTagService->execute(); + } else { + $GLOBALS['TSFE']->page['extensionArgumentsForCanonicalAndHrefLang'] = + '&tx_sgnews_pagebrowser[currentPage]=' . $currentPage; + } + } } -- GitLab