aerni / 纸飞机
生成您的条目和术语的图像
Requires
- php: ^8.2
- laravel/framework: ^10.0 || ^11.0
- laravel/prompts: *
- spatie/browsershot: ^4.0
- spatie/laravel-ray: ^1.32
- statamic/cms: ^5.0
Requires (Dev)
- orchestra/testbench: ^8.19 || ^9.0
- pestphp/pest: ^2.32
- pestphp/pest-plugin-laravel: ^2.2
This package is auto-updated.
Last update: 2024-09-20 18:03:17 UTC
README
纸飞机
此插件提供了一个易于使用的界面,用于生成您的条目和术语的图像。一个常见的用例是生成用于Open Graph和Twitter的社会媒体图像。
先决条件
纸飞机使用Browsershot生成图像,并在您的服务器和本地机器上需要Puppeteer的运行安装。
安装
使用Composer安装插件
composer require aerni/paparazzi
配置将在安装过程中自动发布到config/paparazzi.php
。
配置模型
您应该首先在config/paparazzi.php
中配置您的模型。您可以添加尽可能多的模型。对于模型的要求是width
和height
。所有其他配置选项都是从defaults
数组中传递下来的。您可以通过在模型本身上设置来覆盖任何默认值。
'models' => [ 'open_graph' => [ 'width' => 1200, 'height' => 630, ], 'instagram_post' => [ 'width' => 1080, 'height' => 1080, 'extension' => 'jpeg', 'quality' => 80, 'container' => 'instagram', ], ],
布局和模板
接下来,您应该为模型创建第一个布局和模板。使用以下命令来完成此操作
视图将保存到resources/views/paparazzi
。如果您想使用其他路径,您可以在配置中更改它。
与模型一起工作
将为每个模板创建一个模型。模型的ID将从模型的handle和其模板构建。假设您有一个open_graph
模型,具有default
、article
和video
模板。这将导致具有ID open_graph::default
、open_graph::article
和open_graph::video
的三个模型。
使用Model
外观通过ID获取模型
use Aerni\Paparazzi\Facades\Model; Model::find('open_graph::default');
或者,您可以使用模型的handle作为方法,并将模板作为参数传递
Model::openGraph('default');
如果您不传递模板作为参数,您将获得在config('paparazzi.defaults.template')
中定义的默认模板的模型。如果您没有具有该名称的模板,它将返回它可以找到的第一个模型。
Model::openGraph();
您还可以一次性获取所有模型
Model::all();
或仅选择一组模型
Model::all(['open_graph::defaults', 'twitter::article']);
或获取特定类型的所有模型
Model::allOfType('open_graph');
生成图像
现在您只需在模型上调用generate()
方法
Model::openGraph()->generate();
或通过调度作业在后台生成图像
Model::openGraph()->dispatch();
如果您想在模板中可用条目或术语的数据,请使用content()
方法添加条目/术语
Model::openGraph()->content($entry)->generate();
生成具有条目内容的所有模型的图像。
Model::all()->each->content($entry)->generate();
您还可以将回调传递给generate
或dispatch
方法来配置browsershot实例。
Model::twitter()->generate(fn ($browsershot) => $browsershot->fullPage());
资产管理
生成的图像将被保存为Statamic资产。资产容器、目录和文件引用可以在配置中更改。
变量
您可以使用一些变量来自定义目录和文件引用。
文件引用
该引用用于获取属于模型的生成图像。
'directory' => '{type}/{parent}/{site}/{slug}', 'reference' => '{model}-{layout}-{template}-{parent}-{site}-{slug}',
预览模板
您可以根据以下URL模式在浏览器中预览模板。预览仅在local
环境中可用。
// Schema
/{preview_url}/{model}
// Example
/paparazzi/open_graph
这将返回open_graph
模型的默认模板。要显示不同的模型,请提供完整的ID。
/paparazzi/open_graph::article
您还可以通过layout
参数更改使用的布局
/paparazzi/open_graph::article?layout=secondary
要将条目或术语的内容添加到渲染的模板中,请添加包含条目或术语ID的content
查询参数。
// Entry ID
/paparazzi/open_graph::article&content=c3d19675-c7b8-49c5-84eb-9c5eb9713644
// Term ID
/paparazzi/open_graph::article&content=cars::audi
使用可选的site
参数以特定本地化获取条目或术语。
/paparazzi/open_graph::article&content=c3d19675-c7b8-49c5-84eb-9c5eb9713644?site=german
实时预览
将模型添加到所有集合的实时预览中
public function handle(EntryBlueprintFound $event) { Model::openGraph()->addLivePreviewToCollection(); }
将模型添加到特定集合的实时预览中
public function handle(EntryBlueprintFound $event) { Model::openGraph()->addLivePreviewToCollection('pages'); }
将模型添加到多个选定集合的实时预览中
public function handle(EntryBlueprintFound $event) { Model::openGraph()->addLivePreviewToCollection(['pages', 'articles']); }
将模型添加到所有分类的实时预览中
public function handle(EntryBlueprintFound $event) { Model::openGraph()->addLivePreviewToTaxonomy(); }
将模型添加到特定分类的实时预览中
public function handle(EntryBlueprintFound $event) { Model::openGraph()->addLivePreviewToTaxonomy('categories'); }
将模型添加到多个选定分类的实时预览中
public function handle(EntryBlueprintFound $event) { Model::openGraph()->addLivePreviewToTaxonomy(['categories', 'tags']); }
您还可以同时将模型添加到集合和分类中
public function handle(TermBlueprintFound $event) { Model::openGraph() ->addLivePreviewToCollection(['pages', 'articles']); ->addLivePreviewToTaxonomy('tags'); }
许可证
Paparazzi是免费使用的软件,但未经Michael Aerni的明确书面同意,不得在其他项目中重用。