PHPackages                             mmx/fenom - 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. mmx/fenom

ActiveLibrary

mmx/fenom
=========

Fenom Template Engine for MODX 3

1.0.2(2y ago)137MITPHPPHP &gt;=7.4

Since May 2Pushed 2y ago1 watchersCompare

[ Source](https://github.com/bezumkin/mmx-fenom)[ Packagist](https://packagist.org/packages/mmx/fenom)[ RSS](/packages/mmx-fenom/feed)WikiDiscussions main Synced 1mo ago

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

Fenom Template Engine for MODX 3
--------------------------------

[](#fenom-template-engine-for-modx-3)

> This extra is part of **MMX** initiative - the **M**odern **M**OD**X** approach.

### Prepare

[](#prepare)

This package can be installed only with Composer.

If you are still not using Composer with MODX 3, just download the `composer.json` of your version:

```
cd /to/modx/root/
wget https://raw.githubusercontent.com/modxcms/revolution/v3.0.5-pl/composer.json
```

Then run `composer update --no-dev` and you are ready to install the **mmx** packages.

### Install

[](#install)

```
composer require mmx/fenom --update-no-dev
composer exec mmx-fenom install
```

### Remove

[](#remove)

```
composer exec mmx-fenom remove
composer remove mmx/fenom
```

### How to use

[](#how-to-use)

You can get and configure the instance of Fenom in any snippet.

For example, snippet `Test`:

```
$tpl = $modx->getOption('tpl', $scriptProperties);
$var = $modx->getOption('var', $scriptProperties);

if ($service = $modx->services->get('mmxFenom')) {
    $service->addModifier('hello', static function($var) {
        return $var . ' World!';
    });

    return $service->fetch($tpl, ['var' => $var]);
}

return '';
```

Chunk `Test`:

```
{$var | hello}
```

And MODX call of snippet with chunk:

```
[[!Test?tpl=`test`&var=`Hello`]]

```

You will get `Hello World!`.

---

If you use this package as a dependency for your own extra, you can load and configure the instance inside your class and make it shared through all snippets to make the same settings and modifiers.

### Template Providers

[](#template-providers)

You have 3 template providers by default:

- MODX Chunk (default, no prefix - just specify id or name)
- MODX Template (template:1, or template:BaseTemplate)
- File (file:name.tpl)

If the MODX element has a static file, it will be used first, without checking the contents of the element in database.

File provider is native for Fenom, it makes no connection to database at all. Use it for maximum Fenom experience.

### System Settings

[](#system-settings)

All settings are prefixed with `mmx-fenom.`.

#### elements-path

[](#elements-path)

The root directory for File provider.

If it is not existing or not readable, provider will be disabled and you will get INFO record in MODX log.

By default, it is not existing `core/elements` directory.

#### options

[](#options)

JSON encoded string with options to override defaults of Fenom instance. For example:

```
{"disable_cache":  true}
```

See [Fenom documentation](https://github.com/fenom-template/fenom/blob/master/docs/en/configuration.md#template-settings) for more information.

The default setting are:

```
{
    "disable_cache": false,
    "force_compile": false,
    "auto_reload": true,
    "force_verify": true
}
```

#### use-php

[](#use-php)

You can enable the potentially **dangerous** use of PHP in templates with `{$.php}` accessor.

It will allow you to do anything with PHP, including deleting source files!

```
Today is {$.php.date('Y-m-d H:i:s')}

```

#### use-modx

[](#use-modx)

You can enable the potentially **dangerous** use of MODX instance in templates with `{$.modx}` accessor.

It will allow you to access to everything in MODX, including deleting resources, elements and directories!

```
Current id of MODX resource is: {$.modx->resource->id}

```

### Modifiers

[](#modifiers)

Feel free to use all the [standard Fenom modifiers](https://github.com/fenom-template/fenom/tree/master/docs/en/mods).

There are also 3 additional modifiers:

- `print` - print escaped variable, `{$var | print}`
- `dump` - dump escaped variable, `{$var | dump}`
- `esc` - escape MODX tags in variable, `{$var | esc}`

### Accessors

[](#accessors)

You can access system accessors in your template:

- `$.env` to access `$_ENV`
- `$.get` to access `$_GET`
- `$.post` to access `$_POST`
- `$.files` to access `$_FILES`
- `$.cookie` to access `$_COOKIE`
- `$.server` to access `$_SERVER`
- `$.session` to access `$_SESSION`
- `$.request` to access `$_REQUEST`

For example `{$.server | print}`

### Database Tables

[](#database-tables)

This extra use 2 additional database table to store time of update of MODX chunks and templates, as they have no this data by default:

- `mmx_fenom_chunks_time`
- `mmx_fenom_templates_time`

Also, there is additional table for tracking migrations:

- `mmx_fenom_migrations`

### Caching

[](#caching)

When caching is enabled, you will get compiled templates in `core/cache/mmx-fenom` directory.

This directory will be deleted when you clear MODX cache.

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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 ~6 days

Total

3

Last Release

733d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/022a5cefd3f21223338606065f89cf280b6d9dda930fd9f992c74b42077f70cf?d=identicon)[bezumkin](/maintainers/bezumkin)

---

Top Contributors

[![bezumkin](https://avatars.githubusercontent.com/u/1257284?v=4)](https://github.com/bezumkin "bezumkin (4 commits)")

### Embed Badge

![Health badge](/badges/mmx-fenom/health.svg)

```
[![Health](https://phpackages.com/badges/mmx-fenom/health.svg)](https://phpackages.com/packages/mmx-fenom)
```

###  Alternatives

[elgg/elgg

Elgg is an award-winning social networking engine, delivering the building blocks that enable businesses, schools, universities and associations to create their own fully-featured social networks and applications.

1.7k15.7k5](/packages/elgg-elgg)[odan/phinx-migrations-generator

Migration generator for Phinx

235847.8k23](/packages/odan-phinx-migrations-generator)[oleksandr-torosh/yona-cms

Yona CMS - open source content management system (CMS). Written in Phalcon PHP Framework (v 1.3.x). Has a convenient modular structure. Has simple configuration and architecture. Can be easily modified for any task with any loads.

3652.1k](/packages/oleksandr-torosh-yona-cms)[vesp/core

Vesp core library to make backend simple

243.8k5](/packages/vesp-core)[forme/framework

An MVC framework for WordPress.

175.0k3](/packages/forme-framework)

PHPackages © 2026

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