PHPackages                             nemo64/canonical-url - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. nemo64/canonical-url

AbandonedArchivedTypo3-cms-extension[Utility &amp; Helpers](/categories/utility)

nemo64/canonical-url
====================

Makes your typo3 aware of the url it is used on

v1.0.4(6y ago)15.7k[3 issues](https://github.com/Nemo64/canonical-url/issues)GPL-2.0-or-laterPHPPHP ~7.2

Since Jul 5Pushed 6y ago1 watchersCompare

[ Source](https://github.com/Nemo64/canonical-url)[ Packagist](https://packagist.org/packages/nemo64/canonical-url)[ RSS](/packages/nemo64-canonical-url/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (4)Dependencies (3)Versions (5)Used By (0)

[![Latest Stable Version](https://camo.githubusercontent.com/2a1b817ed29963826b0c9aa13a7620135c0b02c375310537bbd76735cec4d8ab/68747470733a2f2f706f7365722e707567782e6f72672f6e656d6f36342f63616e6f6e6963616c2d75726c2f762f737461626c65)](https://packagist.org/packages/nemo64/canonical-url)[![Total Downloads](https://camo.githubusercontent.com/e57c83f2c1ad6f10cc4c3a374f4e2d1bced5db10ab789ef76176795c6fd4277a/68747470733a2f2f706f7365722e707567782e6f72672f6e656d6f36342f63616e6f6e6963616c2d75726c2f646f776e6c6f616473)](https://packagist.org/packages/nemo64/canonical-url)[![Monthly Downloads](https://camo.githubusercontent.com/2bf0f1d9ac63fa14f45a2ca93503b590ab0311ffeb7db26fb1b806593fe7bc0b/68747470733a2f2f706f7365722e707567782e6f72672f6e656d6f36342f63616e6f6e6963616c2d75726c2f642f6d6f6e74686c79)](https://packagist.org/packages/nemo64/canonical-url)[![License](https://camo.githubusercontent.com/41c69ff2c36e58fa96c76451457f3990776e4715291a7a8cbd44c406f689bf81/68747470733a2f2f706f7365722e707567782e6f72672f6e656d6f36342f63616e6f6e6963616c2d75726c2f6c6963656e7365)](https://packagist.org/packages/nemo64/canonical-url)

EXT:canonical\_url
==================

[](#extcanonical_url)

This extension adds some canonical url features to your page.

This extension is based on my [Blog Post](https://www.marco.zone/typo3-canonical-url) (in german) in which you can read more about the topic of canonical urls in typo3 and why they aren't as simple as they should be.

There are also a lot of extension that already bring canonical support with varying implementation quality but in those the canonical url is just one of many features.

This extension only focuses on how to handle the current page url and you can install this extension and just use the typoscript extensions without any page modifications if you want to have full control.

I encourage you to use this extension as a dependency in your extension if you need canonical\_parameters. This extension won't do anything except for providing the canonical\_parameters getText function (and later maybe more ways like view helpers). The integrator will always have to include the static typoscript for this extension to have any effect. It is therefor a save dependency.

Main features
-------------

[](#main-features)

### Static TypoScript template for ``

[](#static-typoscript-template-for-link-relcanonical)

This extensions adds a TypoScript for you to use. Just add the fittingly named ` (canonical_url)` static include to your typoscript template and you are all set.

### TypoScript extension `data = canonical_parameters`

[](#typoscript-extension-data--canonical_parameters)

You can use the new [getText](https://docs.typo3.org/typo3cms/TyposcriptReference/8.7/DataTypes/Gettext/) funktion `canonical_parameters` to get the query string to the current page. This is different to addQueryString in that it only includes parameters that are relevant for the cache and therefor validated using the [cHash Mechanismus](https://www.typo3lexikon.de/typo3-tutorials/core/cache/chash-was-ist-das.html).

Here an example on how to create a link to the current page:

```
lib.currentPageLink = TEXT
lib.currentPageLink {
    value = Current page

    typolink {
        parameter.data = page:uid
        additionalParams.data = canonical_parameters
        useCacheHash = 1
    }
}
```

And here an example on how to create a breadcrumb where the last entry is the current page:

```
lib.breadcrumb = HMENU
lib.breadcrumb {
    wrap = |
    special = rootline
    special.range = 1|-1
    includeNotInMenu = 1

    1 = TMENU
    1 {
        NO = 1
        NO.wrapItemAndSub = |

        CUR < .NO
        CUR.additionalParams.data = canonical_parameters
        CUR.wrapItemAndSub = |
        CUR.stdWrap.data = TSFE:altPageTitle // page:nav_title // page:title
        CUR.doNotLinkIt = 1
    }
}
```

And here an example on how to implement hreflang:

```
page.headerData {
    99 = TEXT
    99.wrap =
    99.typolink {
        parameter.data = page:uid
        additionalParams.data = canonical_parameters
        additionalParams.wrap = |&L=0
    }

    100 < .99
    100.wrap =
    100.typolink.additionalParams.wrap = |&L=0

    101 < .99
    101.wrap =
    101.typolink.additionalParams.wrap = |&L=1
}
```

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance0

Infrequent updates — may be unmaintained

Popularity22

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity60

Established project with proven stability

 Bus Factor1

Top contributor holds 96% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~87 days

Total

5

Last Release

2527d ago

PHP version history (2 changes)v1.0.0PHP ~7.0

v1.0.4PHP ~7.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/f18b6c8ad90bb53f9c5273b79360259b0ec172951de367046ac13ab0f1b44f63?d=identicon)[Nemo641](/maintainers/Nemo641)

---

Top Contributors

[![Nemo64](https://avatars.githubusercontent.com/u/1749936?v=4)](https://github.com/Nemo64 "Nemo64 (24 commits)")[![Footrotflat](https://avatars.githubusercontent.com/u/34073135?v=4)](https://github.com/Footrotflat "Footrotflat (1 commits)")

### Embed Badge

![Health badge](/badges/nemo64-canonical-url/health.svg)

```
[![Health](https://phpackages.com/badges/nemo64-canonical-url/health.svg)](https://phpackages.com/packages/nemo64-canonical-url)
```

###  Alternatives

[fluidtypo3/flux

The flux package from FluidTYPO3

152982.2k20](/packages/fluidtypo3-flux)[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

96374.6k23](/packages/friendsoftypo3-content-blocks)[brotkrueml/schema

Embedding schema.org vocabulary - API and view helpers for schema.org markup

33584.6k13](/packages/brotkrueml-schema)[eliashaeussler/typo3-form-consent

Extension for TYPO3 CMS that adds double opt-in functionality to EXT:form

1481.0k](/packages/eliashaeussler-typo3-form-consent)[b13/assetcollector

Add CSS and SVG files and strings as inline style tag/inline svg to the html code.

10118.4k](/packages/b13-assetcollector)[mautic/mautic-typo3

Add-on TYPO3 extension that enhances the "EXT:marketing\_automation" TYPO3 extension by connecting it to the Mautic Marketing Automation platform: Determine "Persona" from Mautic segments. Also provides additional services e.g. language synchronisation between Mautic and TYPO3.

236.3k](/packages/mautic-mautic-typo3)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
