PHPackages                             plan2net/link-alchemy - 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. plan2net/link-alchemy

ActiveTypo3-cms-extension

plan2net/link-alchemy
=====================

Rewrite absolute URLs that point to internal pages/files, converting them to internal TYPO3 URLs

14.0.1(4mo ago)34.9k↓16.7%GPL-2.0-or-laterPHPPHP &gt;=8.1

Since Oct 3Pushed 4mo ago2 watchersCompare

[ Source](https://github.com/plan2net/link-alchemy)[ Packagist](https://packagist.org/packages/plan2net/link-alchemy)[ Docs](https://www.plan2.net/)[ RSS](/packages/plan2net-link-alchemy/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (7)Versions (7)Used By (0)

TYPO3 Extension `link_alchemy`
==============================

[](#typo3-extension-link_alchemy)

What does it do?
----------------

[](#what-does-it-do)

The `link_alchemy` extension rewrites external links in TCA `type=link` and RTE text fields that refer to internal TYPO3 pages or files. These links are converted to internal TYPO3 links (`t3://page...`, `t3://file...`).

Installation and configuration
------------------------------

[](#installation-and-configuration)

To install the extension, use Composer:

```
composer require plan2net/link-alchemy
```

No configuration is required. The extension automatically hooks into the DataHandler for TCA fields and into the RTE content transformation process.

Compatibility
-------------

[](#compatibility)

Versions 12.0.0 and higher are compatible with the corresponding TYPO3 versions.

If you already overwrite the class `RteHtmlParser` in your project, you may need to adjust the XCLASS configuration in `ext_localconf.php`.

Usage
-----

[](#usage)

The extension automatically hooks into the RTE content transformation process. No additional setup is required. When RTE content is processed, external links that refer to internal pages or files will be rewritten to use TYPO3's internal link format.

Example
-------

[](#example)

Here is an example of how the extension transforms a link in an RTE text field:

- **Before**: `Link`
- **After**: `Link`

This ensures that links are correctly handled within the TYPO3 CMS environment, providing better integration and consistency.

Internals
---------

[](#internals)

### `Plan2net\LinkAlchemy\Xclass\RteHtmlParser`

[](#plan2netlinkalchemyxclassrtehtmlparser)

This class extends the core `RteHtmlParser` to include custom transformations for internal links.

### `Plan2net\LinkAlchemy\Hooks\DataHandlerHook`

[](#plan2netlinkalchemyhooksdatahandlerhook)

This class handles the transformation of internal links within TCA `type=link` fields.

### `Plan2net\LinkAlchemy\RteTransformation\InternalLinkTransformation`

[](#plan2netlinkalchemyrtetransformationinternallinktransformation)

This class handles the transformation of internal links within the RTE content.

### `Plan2net\LinkAlchemy\Service\UrlParser`

[](#plan2netlinkalchemyserviceurlparser)

This class parses the urls to internal links.

TODO
----

[](#todo)

- Unit-Tests for UrlParser

Acknowledgements
================

[](#acknowledgements)

This extension was inspired by [Georg Ringers](https://github.com/georgringer)'s uri2link extension that only transforms TCA `type=link` fields.

###  Health Score

44

—

FairBetter than 92% of packages

Maintenance74

Regular maintenance activity

Popularity27

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 95.5% 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 ~111 days

Total

5

Last Release

149d ago

Major Versions

12.0.0 → 13.0.02025-05-21

13.1.0 → 14.0.02025-12-19

### Community

Maintainers

![](https://www.gravatar.com/avatar/fdc5d7c9be0f04c0d84c56db1e263fb7cb88c40564a7c293f1a2d4aa543f0115?d=identicon)[plan2net@packagist](/maintainers/plan2net@packagist)

---

Top Contributors

[![richardkrikler](https://avatars.githubusercontent.com/u/57064056?v=4)](https://github.com/richardkrikler "richardkrikler (21 commits)")[![wazum](https://avatars.githubusercontent.com/u/146727?v=4)](https://github.com/wazum "wazum (1 commits)")

---

Tags

typo3typo3-extensionlinkextensiontypo3rteinternal-urls

###  Code Quality

Static AnalysisPsalm

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/plan2net-link-alchemy/health.svg)

```
[![Health](https://phpackages.com/badges/plan2net-link-alchemy/health.svg)](https://phpackages.com/packages/plan2net-link-alchemy)
```

###  Alternatives

[christophlehmann/imageoptimizer

Optimize uploaded/processed images with binaries of your choice

46501.8k](/packages/christophlehmann-imageoptimizer)[dirkpersky/typo3-rte-ckeditor-fontawesome

Adds the Fontawesome add-on to the CKEditor in TYPO3.

16147.9k](/packages/dirkpersky-typo3-rte-ckeditor-fontawesome)[leuchtfeuer/locate

Locate - The users country, preferred language and other facts will be detected. Depending on configurable rules the user can be redirected to other languages or pages. Locate also provides geo blocking for configurable pages in configurable countries.

1182.8k](/packages/leuchtfeuer-locate)[netresearch/contexts

Multi-channel content visibility for TYPO3 - by Netresearch

1117.4k1](/packages/netresearch-contexts)

PHPackages © 2026

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