mmx / fenom
Fenom 模板引擎,适用于 MODX 3
Requires
- php: >=7.4
- fenom/fenom: ^2.12
- mmx/database: ^1.1
- robmorgan/phinx: ^0.13
Requires (Dev)
- modx/revolution: ^v3.0
README
这个扩展是 MMX 创新项目的一部分 - Modern MODX 方法。
准备
该扩展只能通过 Composer 安装。
如果您尚未使用 Composer 与 MODX 3,只需下载您版本的 composer.json
cd /to/modx/root/
wget https://raw.githubusercontent.com/modxcms/revolution/v3.0.5-pl/composer.json
然后运行 composer update --no-dev
,您就准备好安装 mmx 包了。
安装
composer require mmx/fenom --update-no-dev
composer exec mmx-fenom install
移除
composer exec mmx-fenom remove
composer remove mmx/fenom
如何使用
您可以在任何片段中获取和配置 Fenom 实例。
例如,片段 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 '';
块 Test
{$var | hello}
以及使用块调用 MODX 片段
[[!Test?tpl=`test`&var=`Hello`]]
您将得到 Hello World!
。
如果您将此包用作您自己的扩展的依赖项,您可以在类内部加载和配置实例,并通过所有片段共享以使用相同的设置和修饰符。
模板提供者
默认情况下,您有 3 个模板提供者
- MODX 块(默认,无前缀 - 只需指定 id 或名称)
- MODX 模板(模板:1,或模板:BaseTemplate)
- 文件(文件:name.tpl)
如果 MODX 元素具有静态文件,则首先使用该文件,而不检查数据库中元素的内容。
文件提供者是 Fenom 的本地提供者,它根本不连接到数据库。使用它以获得最佳 Fenom 体验。
系统设置
所有设置都以 mmx-fenom.
为前缀。
elements-path
文件提供者的根目录。
如果它不存在或不可读,则提供者将被禁用,您将在 MODX 日志中获得 INFO 记录。
默认情况下,它是存在的 core/elements
目录。
options
JSON 编码的字符串,包含用于覆盖 Fenom 实例默认值的选项。例如
{"disable_cache": true}
有关更多信息,请参阅Fenom 文档
默认设置是
{ "disable_cache": false, "force_compile": false, "auto_reload": true, "force_verify": true }
use-php
您可以使用 {$.php}
访问器启用模板中 PHP 的潜在危险使用。
它将允许您使用 PHP 做任何事情,包括删除源文件!
Today is {$.php.date('Y-m-d H:i:s')}
use-modx
您可以使用 {$.modx}
访问器在模板中启用 MODX 实例的潜在危险使用。
它将允许您访问 MODX 中的所有内容,包括删除资源、元素和目录!
Current id of MODX resource is: {$.modx->resource->id}
修饰符
您可以自由使用所有 标准 Fenom 修饰符。
还有 3 个额外的修饰符
print
- 打印转义变量,{$var | print}
dump
- 转储转义变量,{$var | dump}
esc
- 转义变量中的 MODX 标签,{$var | esc}
访问器
您可以在模板中访问系统访问器
$.env
以访问$_ENV
$.get
以访问$_GET
$.post
以访问$_POST
$.files
以访问$_FILES
$.cookie
以访问$_COOKIE
$.server
以访问$_SERVER
$.session
以访问$_SESSION
$.request
以访问$_REQUEST
例如 {$.server | print}
数据库表
此扩展使用 2 个额外的数据库表来存储 MODX 块和模板的更新时间,因为它们默认没有这些数据
mmx_fenom_chunks_time
mmx_fenom_templates_time
此外,还有一个用于跟踪迁移的附加表
mmx_fenom_migrations
缓存
当启用缓存时,您将在 core/cache/mmx-fenom
目录中获取编译后的模板。
当您清除 MODX 缓存时,此目录将被删除。