Adding canonical links for category and tag pages in Bludit 3.16.2
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:
<!-- 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">
<!-- 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...