arrowsgm/amped-laravel

基于 amp-wp WordPress 插件的 Laravel HTML 到 AMP 转换器

0.5.0 2022-03-09 13:13 UTC

README

此包添加了将现有 HTML 内容转换为 amp-html 的功能。该包使用 AMP 插件 for WordPress 进行内容清理和一些来自 WordPress 的辅助函数用于 amp-wp 插件。

AMP 是一个快速发展的框架,但遗憾的是,目前没有(或者至少我找不到)任何可以提供有效的 HTML 到 amp-html 代码转换器的解决方案。根据 ampproject/amp-wp#2315,@amproject 正在准备发布一个独立的 PHP 库,不受任何 CMS 的限制,但在此期间,使用 amp-wp 插件作为内容清理器是最简单的解决方案,尽管它包含许多与 WordPress 相关的代码。如果您对包的清理器有任何问题,可以轻松地将其替换为自己的,只需更改提供的配置即可。

需求

  • PHP >= 7.3
  • Laravel >= 6.x

从版本 < 0.4.x 更新

您需要将 composer.json 中的仓库 URL 从 https://github.com/ampproject/amp-wp 更改为 https://github.com/arrowsgm/amp-wp,这是一个 ampproject/amp-wp 包的硬分叉版本 1.4.4,并更新了依赖关系。

安装

将 amp-wp 插件的链接添加到您的 composer.json 仓库部分

...
"repositories": [
...
    {
      "type": "vcs",
      "url": "https://github.com/arrowsgm/amp-wp"
    }
  ]
...

按常规要求包

composer require arrowsgm/amped-laravel

使用

您可以使用 artisan 命令发布配置

php artisan vendor:publish --tag=amped-config

或者只需在 config 目录中创建 amped.php 文件并更改所需的参数。

要转换现有内容,请使用提供的 Amped 门面

...
use Arrowsgm\Amped\Facades\Amped;
...
class PostController extends Controller
{
    ...
    public function show(Post $post)
    {
        ...
        $amp_content = Amped::convert($post->content);
        ...
    }
    ...
}

您可以在 blade 模板中使用 Amped 门面,已提供别名

<div class="amp-content">{{ Amped::convert($post->content) }}</div>

Amped 类还具有 inlineCss 方法,用于从 CSS 文件添加自定义样式

{!! Amped::inlineCss('amp.css') !!}

并且您可以设置基于 amp_custom_css_path 配置参数的 AMP 样式基本目录。

isDevParam 方法对于 AMP 链接构建很有用。如果 Laravel 应用程序处于调试状态,它将返回 #development=1 字符串

<a 
    href="{{ route('post.show', $prev_post->slug) }}/amp{!! Amped::isDevParam() !!}"
    class="links links-prev">{{ $prev_post->name }}</a>

并且您可以在浏览器中启用 AMP 验证的情况下轻松浏览现有的帖子。