pageNumber(); if ($pageNumber > 1) { $canonical = DOMAIN_BASE . 'page/' . $pageNumber . '/'; } else { $canonical = DOMAIN_BASE; } break; case 'page': $canonical = $page->permalink($absolute = true); break; case 'category': // Category pages $categoryKey = $url->slug(); $canonical = DOMAIN_CATEGORIES . $categoryKey . '/'; $pageNumber = $url->pageNumber(); if ($pageNumber > 1) { $canonical .= 'page/' . $pageNumber . '/'; } break; case 'tag': // Tag pages $tagKey = $url->slug(); $canonical = DOMAIN_TAGS . $tagKey . '/'; $pageNumber = $url->pageNumber(); if ($pageNumber > 1) { $canonical .= 'page/' . $pageNumber . '/'; } break; default: // For any other page type, use current URI $canonical = DOMAIN_BASE . ltrim($url->uri(), '/'); break; } if (!empty($canonical)) { $html .= '' . PHP_EOL; // Add prev/next for paginated content (helps search engines) $pageNumber = $url->pageNumber(); if ($pageNumber > 1) { // Previous page if ($pageNumber === 2) { $prevUrl = preg_replace('/page\/\d+\/?$/', '', $canonical); } else { $prevUrl = preg_replace('/page\/\d+\/?$/', 'page/' . ($pageNumber - 1) . '/', $canonical); } $html .= '' . PHP_EOL; } // Next page (only if more content exists) // This requires checking if there's a next page of content global $content; global $site; if (isset($content) && is_array($content) && count($content) >= $site->itemsPerPage()) { $nextUrl = preg_replace('/page\/\d+\/?$/', '', $canonical); if ($pageNumber < 1) { $nextUrl .= 'page/2/'; } else { $nextUrl = preg_replace('/page\/\d+\/?$/', 'page/' . ($pageNumber + 1) . '/', $canonical); } $html .= '' . PHP_EOL; } } return $html; } }