mmx/fenom

Fenom 模板引擎,适用于 MODX 3

1.0.2 2024-05-15 02:25 UTC

This package is auto-updated.

Last update: 2024-09-15 03:24:06 UTC


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 缓存时,此目录将被删除。