https://github.com/magesuite/seo-canonical
This extension adds an extra setting to output canonical link meta tags for category and product pages. Canonical URLs prevent duplication of content and increase SEO.
Installation
This module is part of MageSuite metapackage
Installation if metapackage is not used:
composer require "creativestyle/magesuite-seo-canonical" ^1.0.0
Admin settings
Admin settings can be found under Stores -> Configuration -> MageSuite -> SEO
tab.
Settings:
Name | Value | Comment |
---|---|---|
Canonical Tag For Other Pages | Yes/No | Enables canonical tag for pages which Magento doesn't support out of the box like CMS ones. Read more. |
Backend
Backend documentation in progress
vendor/creativestyle/magesuite-seo-canonical/view/frontend/templates/canonical.phtml
<?php $canonicalUrl = $block->getCanonicalUrl(); if ($canonicalUrl): ?> <link rel="canonical" href="<?= $canonicalUrl; ?>"> <?php endif;
vendor/creativestyle/magesuite-seo-canonical/Block/Canonical.php:25
class Canonical extends \Magento\Framework\View\Element\Template { protected $_template = 'MageSuite_SeoCanonical::canonical.phtml'; ..... public function getCanonicalUrl() { return $this->canonicalUrl->getCanonicalUrl(); } }
vendor/creativestyle/magesuite-seo-canonical/Service/CanonicalUrl.php:33
class CanonicalUrl { const SEO_CANONICAL_TAG_PATH = 'seo/configuration/canonical_tag_enabled'; ..... public function getCanonicalUrl() { if (!$this->isEnabled()) { return null; } $canonicalUrl = $this->urlBuilder->getUrl('*/*/*', ['_current' => true, '_use_rewrite' => true]); return $this->formatCanonicalUrl($canonicalUrl); } private function formatCanonicalUrl($canonicalUrl) { $urlWithoutParams = $this->stripGetParams($canonicalUrl); if ($this->isHomepageWithStoreCodeInPath($urlWithoutParams)) { return $urlWithoutParams; } return rtrim($urlWithoutParams, '/'); } private function stripGetParams($canonicalUrl) { return strtok($canonicalUrl, '?'); } }
Frontend
Frontend template for canonical URLs is located under Creativestyle_SeoCanonicalExtension::canonical.phtml
It uses getCanonicalUrl()
in order to display a canonical url.