aerni/纸飞机

生成您的条目和术语的图像

dev-main 2024-05-20 17:05 UTC

This package is auto-updated.

Last update: 2024-09-20 18:03:17 UTC


README

Statamic Packagist version Packagist Total Downloads

纸飞机

此插件提供了一个易于使用的界面,用于生成您的条目和术语的图像。一个常见的用例是生成用于Open Graph和Twitter的社会媒体图像。

先决条件

纸飞机使用Browsershot生成图像,并在您的服务器和本地机器上需要Puppeteer的运行安装。

安装

使用Composer安装插件

composer require aerni/paparazzi

配置将在安装过程中自动发布到config/paparazzi.php

配置模型

您应该首先在config/paparazzi.php中配置您的模型。您可以添加尽可能多的模型。对于模型的要求是widthheight。所有其他配置选项都是从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模型,具有defaultarticlevideo模板。这将导致具有ID open_graph::defaultopen_graph::articleopen_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();

您还可以将回调传递给generatedispatch方法来配置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的明确书面同意,不得在其他项目中重用。

致谢

Michael Aerni开发