stillat/statamic-template-resolver

v1.1.0 2024-05-11 20:09 UTC

This package is auto-updated.

Last update: 2024-09-11 20:59:38 UTC


README

Statamic模板解析器是一个简单的实用工具插件,旨在供其他插件使用。它提供了一个简单的工具,用于根据条目的蓝图集合选择和渲染模板,支持回退到默认模板。

示例用例

  • 动态选择模板以从HTML生成社交媒体图像
  • 动态生成HTML文档,无需向网站发起网络请求
  • 任何需要根据条目的蓝图/集合详情支持可定制模板的场景

如何安装

从您的项目根目录运行以下命令

composer require stillat/statamic-template-resolver

如何使用

您需要创建一个StringTemplateManager实例,并提供模板搜索目录。

<?php

use Stillat\StatamicTemplateResolver\StringTemplateManager;

$manager = new StringTemplateManager(
    resource_path('views/social_media_images')
);

一旦您有了StringTemplateManager实例,您就可以检查是否存在特定集合/蓝图组合的模板

<?php

// ...

if ($manager->hasTemplate($collection, $blueprint)) {
    // The template exists.
}

hasTemplate方法将在特定模板默认模板存在时返回true。要创建默认模板,在模板文件夹的根目录下创建一个名为_default.antlers.html_default.blade.php的文件。

在我们的例子中,默认模板需要放置在这里

views/social_media_images/_default.antlers.html

特定集合/蓝图模板存储在以下格式的嵌套目录结构中

<template_directory><collection_handle>/<blueprint_handle>.<extension>

例如,如果我们有一个blog集合和一个post蓝图,我们可以在以下位置创建一个特定模板

views/social_media_images/blog/post.antlers.html

此库支持以下扩展

  • .antlers.html:使用Statamic的Antlers模板引擎渲染模板
  • .blade.php:使用Laravel的Blade模板引擎渲染模板

要使用数据渲染模板,我们可以使用render方法

<?php

// ...

$results = $manager->render(
    'colllection_handle',
    'blueprint_handle',
    $data
);

如果找不到模板,则render方法将返回null$data作为数组提供,是必需的。

我们还可以通过提供可选的可调用对象作为第四个参数,在渲染模板之前修改模板

<?php

// Modify the template before its rendered.
$results = $manager->render(
    'collection_handle',
    'blueprint_handle',
    $data,
    function ($template, $data) {
        return mb_strtoupper($template);
    }
);

修改的可调用对象将接收未修改的模板内容作为其第一个参数,以及原始数据数组作为第二个参数。

许可证

Statamic模板解析器是免费软件,在MIT许可证下发布。