Adding canonical links for category and tag pages in Bludit 3.16.2
TL;DR: I updated to Bludit 3.17.2 and this change isn't needed anymore as the Canonical plugin was rewritten and now includes canonical links for tag and category pages.
Google's Search Console has problems with my site regarding duplicate content due to "Duplicate without user-selected canonical". Which is Google's wording for:
The automatically generated site-views for your categories and tags have the same content sometimes. Hence identical content is available under different URLs.
And yes, when I checked the HTML source of these pages there is no canonical link. Despite the canonical-plugin being active.
A single post shows the following:
<!-- Load Bludit Plugins: Site head -->
<link rel="canonical" href="https://admin.brennt.net/please-don-t-remove-your-comment-section">
<link href="/bl-plugins/prism/css/prism.css" rel="stylesheet">
But for https://admin.brennt.net/tag/2fa or https://admin.brennt.net/category/it it only showed the following:
<!-- Load Bludit Plugins: Site head -->
<link href="/bl-plugins/prism/css/prism.css" rel="stylesheet">
ChatGPT to the rescue! - But with a twist!
As it is currently 6am I wasn't in the mood to dig through the code myself. So I asked ChatGPT: "How do I retrieve the tag name element in the Bludit blogging software". Only for ChatGPT to give me an extensive answer. ... For PHP-Code the canonical-plugin didn't have.
Ah.. Yes.. Typical, isn't it? Stupid LLMs, bla bla.
No, turns out on January 15th the canonical-plugins was extensively re-written. Fixing the missing canonical links. Great. So ChatGPT did indeed based it answer on the current code. I quickly searched the Bludit forum and GitHub if there is anything said about a new Bludit release but nothing showed up. And as the last release was in August 2024 I currently don't have high hopes for a release in the near future.
Instead I just copy & pasted the current code completely into ChatGPT - as providing the GitHub link didn't work - and got an answer that looked good.
<?php
class pluginCanonical extends Plugin {
public function siteHead()
{
// Home page
if ($GLOBALS['WHERE_AM_I'] === 'home') {
return '<link rel="canonical" href="'.DOMAIN_BASE.'"/>'.PHP_EOL;
}
// Single page / post
elseif ($GLOBALS['WHERE_AM_I'] === 'page') {
global $page;
return '<link rel="canonical" href="'.$page->permalink().'"/>'.PHP_EOL;
}
// Tag pages
elseif ($GLOBALS['WHERE_AM_I'] === 'tag') {
global $url;
$tagKey = $url->slug();
return '<link rel="canonical" href="'.DOMAIN_TAGS.$tagKey.'"/>'.PHP_EOL;
}
// Category pages
elseif ($GLOBALS['WHERE_AM_I'] === 'category') {
global $url;
$categoryKey = $url->slug();
return '<link rel="canonical" href="'.DOMAIN_CATEGORIES.$categoryKey.'"/>'.PHP_EOL;
}
}
}
The only new lines are the ones for tag pages and category pages.
Editing the bl-plugins/canonical/plugin.php file, reloading a category and a tag page, aaaaaaand we're green on canonical links.
Result for https://admin.brennt.net/tag/2fa:
<!-- Load Bludit Plugins: Site head -->
<link rel="canonical" href="https://admin.brennt.net/tag/2fa"/>
<link href="/bl-plugins/prism/css/prism.css" rel="stylesheet">
Result for https://admin.brennt.net/category/it:
<!-- Load Bludit Plugins: Site head -->
<link rel="canonical" href="https://admin.brennt.net/category/it"/>
<link href="/bl-plugins/prism/css/prism.css" rel="stylesheet">
Great. Now back to the main problem...