From 1cb4cbfe2438b6b6a1c0b726ac5200aa20e4e82a Mon Sep 17 00:00:00 2001 From: Alex Cabal Date: Sun, 5 Jan 2025 13:52:09 -0600 Subject: [PATCH] Redirect ebook searches for only one tag to the /subjects/ 1){ - $pageTitle .= ', page ' . $page; - } - $pageDescription = 'Page ' . $page . ' of the Standard Ebooks free ebook library'; if($query != ''){ @@ -73,15 +63,44 @@ try{ ksort($queryStringParams); + // If all we did was select one tag, redirect the user to `/subjects/` instead of `/ebooks?tag[0]=`. + if(sizeof($tags) == 1 && $query == '' && preg_match('|^/ebooks|iu', $_SERVER['REQUEST_URI'] ?? '')){ + unset($queryStringParams['tags']); + $queryStringWithoutTags = http_build_query($queryStringParams); + $url = '/subjects/' . $tags[0]; + if($queryStringWithoutTags != ''){ + $url .= '?' . $queryStringWithoutTags; + } + header('Location: ' . $url); + exit(); + } + + // We only have one tag, change the page URL used for back/next links to `/subjects/`. + if(sizeof($tags) == 1 && $query == ''){ + $pageUrl = '/subjects/' . $tags[0]; + unset($queryStringParams['tags']); + } + $queryString = http_build_query($queryStringParams); unset($queryStringParams['page']); $queryStringWithoutPage = http_build_query($queryStringParams); - $canonicalUrl = SITE_URL . '/ebooks'; + $canonicalUrl = SITE_URL . $pageUrl; if($queryString != ''){ - $canonicalUrl .= '?' . $queryString; + $canonicalUrl .= '?' . $queryString; + } + + $result = Ebook::GetAllByFilter($query != '' ? $query : null, $tags, $sort, $page, $perPage, Enums\EbookReleaseStatusFilter::All); + $ebooks = $result['ebooks']; + $totalEbooks = $result['ebooksCount']; + $pageTitle = 'Browse Standard Ebooks'; + $pageHeader = 'Browse Ebooks'; + $pages = ceil($totalEbooks / $perPage); + + if($page > 1){ + $pageTitle .= ', page ' . $page; } if($pages > 0 && $page > $pages){ @@ -119,15 +138,15 @@ catch(Exceptions\AppException $ex){ 0){ ?>