stillat / statamic-template-resolver
v1.1.0
2024-05-11 20:09 UTC
Requires
- php: ^8.0
- statamic/cms: ^4 || ^5
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许可证下发布。