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(7y ago)15.8k[3 issues](https://github.com/Nemo64/canonical-url/issues)GPL-2.0-or-laterPHPPHP ~7.2

Since Jul 5Pushed 7y 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 today

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

25

—

LowBetter than 35% of packages

Maintenance0

Infrequent updates — may be unmaintained

Popularity19

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity61

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

2574d 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

[friendsoftypo3/content-blocks

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

103519.9k53](/packages/friendsoftypo3-content-blocks)[typo3/cms-form

TYPO3 CMS Form - Flexible TYPO3 frontend form framework that comes with a backend editor interface.

147.6M266](/packages/typo3-cms-form)[b13/assetcollector

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

10125.6k](/packages/b13-assetcollector)[brotkrueml/schema

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

34653.7k16](/packages/brotkrueml-schema)[netresearch/rte-ckeditor-image

Image support in CKEditor for the TYPO3 ecosystem - by Netresearch

611.1M8](/packages/netresearch-rte-ckeditor-image)[fluidtypo3/flux

The flux package from FluidTYPO3

1501.0M25](/packages/fluidtypo3-flux)

PHPackages © 2026

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