PHPackages                             namelesscoder/patternlab-fluid-typo3-export - 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. namelesscoder/patternlab-fluid-typo3-export

ActivePatternlab-plugin

namelesscoder/patternlab-fluid-typo3-export
===========================================

TYPO3 CMS Extension asset expor integration for Pattern Lab Fluid Edition

1.1.0(8y ago)62.6k↓100%3[2 issues](https://github.com/NamelessCoder/patternlab-fluid-typo3-export/issues)MITPHP

Since Dec 2Pushed 6y ago2 watchersCompare

[ Source](https://github.com/NamelessCoder/patternlab-fluid-typo3-export)[ Packagist](https://packagist.org/packages/namelesscoder/patternlab-fluid-typo3-export)[ RSS](/packages/namelesscoder-patternlab-fluid-typo3-export/feed)WikiDiscussions master Synced 2mo ago

READMEChangelogDependenciesVersions (3)Used By (0)

Pattern Lab Fluid Engine: TYPO3 CMS export
==========================================

[](#pattern-lab-fluid-engine-typo3-cms-export)

Package which hooks into the [Pattern Lab Fluid Edition](https://github.com/NamelessCoder/patternlab-fluid-edition) to write your patterns as proper TYPO3 CMS Fluid template files into an extension folder - which then is more or less plug and play.

The basics
----------

[](#the-basics)

Adding this package to a Pattern Lab Fluid Edition means that when you generate templates (either by watching files or manually generating) your files get copied and adjusted so they fit into a TYPO3 CMS extension's `Resources` folder.

The following rules are in place:

- Atoms are copied to `Resources/Private/Partials/Atoms` that you can easily render from any of your templates.
- Molecules are copied to `Resources/Private/Partials/Molecules` - and are also partials.
- Organisms are copied to `Resources/Private/Partials/Organisms` - and are also partials.
- Templates are copied to `Resources/Private/Templates/Default` - which emulates a "DefaultController" to scope templates.
- Pages are copied to `Resources/Private/Templates/Page` - which emulates a "PageController" to scope templates.

Layouts are handled specially and separately. If any of your `Templates` or `Pages` use a Fluid layout, then this is also extracted, rewritten and copied to `Resources/Private/Layouts/`.

Note here that while Pattern Lab allows you to use a Layout for every pattern down to the Atoms type, the Layout is only respected in TYPO3 CMS for the `Templates` and `Pages` types. Though they do get copied, they still contain the Layout reference, and most likely only can be rendered by rendering a specific section. **This means that in order to render an Atom, Molecule or Organism which in Pattern Lab uses a Layout, in almost all cases you will have to call `f:render`with both a `section` AND `partial` argument!**. This package does not correct the render statements in this case; though that may be added as a feature at a later time.

Defining the export target folder
---------------------------------

[](#defining-the-export-target-folder)

Once installed, your Pattern Lab Fluid Edition's `config/config.yml` file can be edited to add:

```
fluidTYPO3ExtensionExportPath: /path/to/my_extension
```

Define the target path pointing to the *root of the extension folder*. The rest, e.g. `Resources/Private`, is implied.

Attempting to generate your templates without this parameter present will trigger an exception asking you to add the configuration option.

Using the exported TYPO3 CMS templates
--------------------------------------

[](#using-the-exported-typo3-cms-templates)

Once your templates are exported, how you render them will depend largely on your preferred integration method (either as controller action templates, as `FLUIDTEMPLATE` objects or other) but there are a couple of hints to achieve the most transparent integration:

1. Generating templates into an extension which only has this single responsibility, carrying template files, means you can add the paths for this extension to those of a secondary extension - for example a customer specific extension.
2. Alternatively, generating into an extension which also contains other template files is possible, but should be done carefully as to avoid overwriting any manually added partials. Consider a separate set of folders for the manually added templates if this is your use case.
3. The exported templates can also be used as content types with very little adaptation: for example, `Fluid Styled Content` allows you to override templates using TypoScript. You can use this to your advantage, by letting Pattern Lab generate core content type templates for example as the `Template` pattern type.
4. The safest way to integrate the templates will always be to *pre-process all variables that are used in the template so that your assigned variables completely match the structure of the JSON dummy data associated with the pattern.*This is the method that involves the absolute minimum effort in terms of having to edit the generated templates.

Limitations / future features
-----------------------------

[](#limitations--future-features)

- Extension manifest files are not generated and must be created manually before the extension can be loaded.
- The Pattern Lab JSON data is not copied, but can be manually copied and assigned as dummy data until real data exists. Future versions may do this for you by creating dummy TypoScript and correcting references to variables.
- The exporting logic will indiscriminately overwrite any existing files; future versions may be configurable to either ask or selectively overwrite only some of the templates.
- Nothing in terms of configuration (TypoScript, global config, etc.) is currently written and must be manually created.
- Although PatternLab supports writing ViewHelpers into the edition's source files, these classes are currently not exported - future versions are very likely to begin doing this for you. Until such time, copy the classes into your extension of choice and register that extension's ViewHelper classes folder using the `plio` namespace name.

Credits
-------

[](#credits)

This work was kindly sponsored by [Busy Noggin](http://busynoggin.com/).

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance13

Infrequent updates — may be unmaintained

Popularity23

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity64

Established project with proven stability

 Bus Factor1

Top contributor holds 71.4% 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 ~37 days

Total

2

Last Release

3044d ago

### Community

Maintainers

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

---

Top Contributors

[![NamelessCoder](https://avatars.githubusercontent.com/u/2228052?v=4)](https://github.com/NamelessCoder "NamelessCoder (5 commits)")[![jsegars](https://avatars.githubusercontent.com/u/110418?v=4)](https://github.com/jsegars "jsegars (1 commits)")[![stat1x](https://avatars.githubusercontent.com/u/11523234?v=4)](https://github.com/stat1x "stat1x (1 commits)")

### Embed Badge

![Health badge](/badges/namelesscoder-patternlab-fluid-typo3-export/health.svg)

```
[![Health](https://phpackages.com/badges/namelesscoder-patternlab-fluid-typo3-export/health.svg)](https://phpackages.com/packages/namelesscoder-patternlab-fluid-typo3-export)
```

PHPackages © 2026

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