daun/template-engine-latte

ProcessWire 模块,将 Latte 添加到 TemplateEngineFactory

安装: 605

依赖项: 0

建议者: 0

安全: 0

星标: 7

关注者: 3

分支: 2

开放问题: 1

类型:processwire-module

v2.1.0 2023-11-22 16:51 UTC

This package is auto-updated.

Last update: 2024-09-22 18:33:06 UTC


README

Build Status StyleCI License: MIT ProcessWire 3

这是一个 ProcessWire 模块,将 Latte 添加到 TemplateEngineFactory

此模块版本使用 Latte 3,其中定义标签/宏的方式有所变动。如果您需要继续使用 Latte 2,请保持此模块的 ^1.0 主要版本。了解更多关于 迁移到 Latte 3将宏升级为标签 的信息。

需求

  • ProcessWire 3.0 或更高版本
  • TemplateEngineFactory 2.0 或更高版本
  • PHP 8.0 或更高版本
  • Composer

安装

在您的 ProcessWire 安装根目录中执行以下命令

composer require daun/template-engine-latte:^2.0

这将在一步中安装 TemplateEngineLatteTemplateEngineFactory 模块。之后,不要忘记在 TemplateEngineFactory 模块的配置中启用 Latte 作为引擎。

ℹ️ 此模块包含测试依赖项。如果您在生产环境中使用 composer install 安装,请确保传递 --no-dev 标志以省略自动加载任何不必要的测试依赖项!

配置

该模块提供了以下配置

  • 模板文件后缀 Latte 模板文件的后缀,默认为 latte
  • 默认布局文件 所有视图都将扩展的布局,除非被覆盖。
  • 在 Latte 模板中提供 ProcessWire API 变量 API 变量($pages$input$config...)在 Latte 中可访问,例如,{$config} 用于配置 API 变量。
  • 简化的路径解析 启用类似 Blade 的点符号进行目录遍历。 见下文
  • 自动刷新模板(重新编译) 每当源代码更改时重新编译模板。

简化的路径解析

此选项将启用以下两项功能

  • 允许使用类似 Blade 的点符号进行目录遍历。
  • 将基本视图目录添加到所有路径前面,消除在子目录中使用无限 ../ 的需要。

示例

以下两个都将解析为 site/templates/views/partials/navigation.latte

  • 正常解析:{include '../../partials/navigation.latte'}
  • 启用简化解析:{include 'partials.navigation'}

扩展 Latte

可以在模块初始化 Latte 之后扩展 Latte。将方法 TemplateEngineLatte::initLatte 连接到注册自定义标签、过滤器、函数等。

以下是如何使用提供的钩子添加自定义宏和过滤器的示例。

wire()->addHookAfter('TemplateEngineLatte::initLatte', function (HookEvent $event) {
    /** @var Latte\Engine */
    $latte = $event->arguments('latte');
    $compiler = $latte->getCompiler();

    // Add filter
    $latte->addFilter('lower', function ($str) { return strtolower($str); });

    // Add custom tags via extensions
    $latte->addExtension(new FooExtension);
});

上述钩子可以放在您的 site/init.php 文件中。如果您更喜欢使用模块,请将其放入模块的 init() 方法中,并确保模块自动加载。