tobimori / kirby-paparazzi
程序化生成页面图像
Requires
- php: >=8.2.0
- getkirby/composer-installer: ^1.2
- spatie/browsershot: ^4.1.3
Requires (Dev)
- getkirby/cms: ^4.0.0-beta.2
README
一个使用HTML、JS和CSS代码程序化创建图像的工具包,由Kirby提供支持。底层使用Browsershot & Puppeteer。
注意
这是一个正在开发中的插件。API & 使用可能随时更改。
先决条件
- Kirby 4.0+
- Composer用于插件安装
- 一个有效的Puppeteer安装
安装
composer require tobimori/kirby-paparazzi
不支持非Composer的安装方法。
用法
目前,Paparazzi支持以下创建图像的方式
内容表示
1. 创建模板
对于我们的图像表示,让我们在/site/templates
目录中创建一个文件default.png.php
。该文件包含将由Puppeteer渲染成图像的模板。
它的工作方式就像编写一个正常的HTML模板。
内容表示使用与HTML副本相同的名称。这意味着,如果我们想为所有project
页面创建图像,我们的模板名称必须为project.png.php
。
2. 创建Paparazzi控制器
Paparazzi使用控制器将逻辑注入到您的模板中。让我们在/site/controllers
目录中创建一个与您的模板同名文件。
<?php use tobimori\Paparazzi\Controller; return Controller::run(width: 1200, height: 630);
3. 向模板添加内容
现在,让我们向我们的模板添加一些内容。我们可以像在正常模板中一样使用所有的Kirby变量 & 助手。
我们的示例模板可能看起来像这样
<h1><?= $page->title() ?></h1> <img src="<?= $page->image()->url() ?>"> <?php foreach ($page->children()->listed() as $child): ?> <h2><?= $child->title() ?></h2> <p><?= $child->text()->excerpt(50) ?></p> <?php endforeach ?>
4. 在浏览器中欣赏结果
现在,我们可以打开我们的页面在浏览器中,只需将.png
添加到URL即可。这将使我们的模板渲染成图像。
5. 与kirby-seo一起使用(可选)
如果您正在使用我的kirby-seo插件,并且想将图像用作Open Graph图像,您可以使用程序化默认值功能。
- 创建一个页面模型,例如
site/models/project.php
。您可以在Kirby指南中了解更多关于页面模型的信息。 - 添加一个返回包含Open Graph图像URL的数组的
metaDefaults()
函数,如下所示
<?php use Kirby\Cms\Page; class ProjectPage extends Page { public function metaDefaults() { return [ 'ogImage' => $this->url() . '.png' ]; } }
请注意,这需要kirby-seo v0.4.0或更高版本。
限制
使用PHP内置服务器
默认情况下,内置的PHP服务器默认不能同时接受超过1个请求。如果您从服务器加载资源或图像,请求将超时,因为Puppeteer永远不会进入空闲状态。您必须在开发中使用Apache或Nginx等适当的Web服务器,或将PHP_CLI_SERVER_WORKERS
环境变量设置为大于1的值。
路线图
此插件非常具体,主要随着我的需求而增长。新功能通常只有在我自己项目需要时才会添加。我只考虑资助的功能请求。这并不意味着插件已弃用,它将得到积极维护。
支持
此插件免费提供并发布在宽松的MIT许可证下。如果您将其用于商业项目,请考虑在GitHub上赞助我以支持进一步的开发和插件维护。
许可证
MIT许可证 版权所有 © 2023 托马斯·莫里茨