revelateur/bladerunner

安装次数: 1,005

依赖项: 0

建议者: 0

安全性: 0

星星: 0

关注者: 0

分支: 14

类型:wordpress-plugin

1.8.2 2021-09-16 08:36 UTC

README

Laravel Blade 模板引擎的 WordPress 插件。

要将它安装到基于 Composer 的 WordPress 安装中

composer require revelateur/bladerunner

在 WordPress 内激活插件,并检查带有 *.blade.php 的模板,使其处于活动状态。由于 WordPress 的基本功能,您的主题仍需要一个 index.php。当移除它时,主题会变成损坏的。

如果您不使用基于 Composer 的 WordPress 开发环境,您可以从 Bladerunner 网站 http://bladerunner.aekab.se 下载最新的插件版本,并以常规方式通过 wp-admin 将其上传到 WordPress。

此插件的发布记录列在下面的说明中。

你好,世界!

  1. 使用 composer 安装库
  2. 确保缓存文件夹可写,例如 ../wp-content/uploads/.cache
  3. 激活插件
  4. 创建一个视图,例如
<!-- view file: views/pages/index.blade.php -->
Hello World Page rendered at {{ date('Y-m-d H:i:s') }}
  1. 在您的 index.php 中,添加对创建的视图的全局调用,例如
<?php
    bladerunner('views.pages.index')

https://laravel.net.cn/docs/5.2/blade

缓存

  • 如果设置了 WP_DEBUG 并设置为 true,则模板将始终渲染并更新。
  • save_post 时使视图文件(缓存)失效
  • (在开发模板时清空 uploads 目录中的 .cache 文件夹是个好主意。例如,在您的 gulp-file 中创建一个 del 命令。)

目录

  • 您的缓存视图将始终存储在您的 wp 上传文件夹中的 .cache
  • 您的视图必须放置在您的主题文件夹中。
  • 您的视图必须具有 .blade.php 扩展名。

模板辅助函数

有一个名为 bladerunner 的模板辅助函数,定义全局以在标准 WordPress 模板中使用。

示例:您想创建一个 404 模板,但不希望使用 .blade.php 扩展名来模板文件。

  • 在主题根目录中创建一个 404.php。
  • 将以下代码添加到模板中
<?php
    bladerunner('views.pages.404');
  • views/pages 文件夹中,创建一个 blade 模板 404.blade.php

您可以通过全局 bladerunner 函数传递任何数据,例如

<?php
    bladerunner('views.pages.404', ['module'=>$module]);

或使用 compact,例如

<?php
    bladerunner('views.pages.404', compact('module'));

控制器

从版本 1.7 开始,控制器被添加到 Bladerunner。默认情况下,Bladerunner 将在主题文件夹中的 + /controllers 中查找扩展类。如果您想添加或更改控制器路径,请查看下面的过滤器!

控制器类必须扩展 \Bladerunner\Controller 才能正常工作。它将猜测视图的路径,但您可以使用 protected $view='your.custom.view.path'' 来覆盖它。

控制器文件遵循与 WordPress 相同的层次结构。您可以使用 Blade 指令 @debug 来查看控制器层次结构。

扩展控制器类,建议类名与文件名匹配。在控制器类中创建方法

  • 使用 public function 向 Blade 视图公开返回的值。
  • 使用 public static function 在 Blade 视图中使用该函数。
  • 使用 protected function 用于内部控制器方法,因为只有公共方法才会公开到视图中。您可以在 __construct 中运行它们。

控制器示例

以下示例将 $images 公开给 views/single.blade.php

controllers/Single.php

<?php

namespace App;

use Bladerunner\Controller;

class Single extends Controller
{
    /**
     * Return images from Advanced Custom Fields
     *
     * @return array
     */
    public function images()
    {
        return get_field('images');
    }
}

views/single.blade.php

@if($images)
  <ul>
    @foreach($images as $image)
      <li><img src="{{$image['sizes']['thumbnail']}}" alt="{{$image['alt']}}"></li>
    @endforeach
  </ul>
@endif

钩子和过滤器

Bladerunner 不断实现过滤器和钩子来修改值和过程。

钩子

...

过滤器

修改Bladerunners缓存文件夹路径,默认为../wp-content/uploads/.cache

add_filter('bladerunner/cache/path', function() {
	return '/my/path/to/cache';
});

如果您不想Bladerunners创建缓存文件夹

add_filter('bladerunner/cache/make', function() {
    return false;
});

如果您想自定义存储视图的基准路径,请使用

add_filter('bladerunner/template/bladepath', function ($paths) {
    if (!is_array($paths)) {
        $paths = [$paths];
    }
    $paths[] = ABSPATH . '../../resources/views';
    return $paths;
});

如果您想自定义存储控制器的路径,请使用

add_filter('bladerunner/controller/paths', function ($paths) { 
    $paths[] = PLUGIN_DIR . '/my-fancy-plugin/controllers';
    return $path; 
});

我们将很快将更多的WordPress扩展添加到Bladerunner引擎中。请给我们提供您的优秀示例以便实现!

链接

测试

测试要求

  • 最新的Docker安装(不是老式的Boot2Docker)
  • PHP Composer 目前仅在OSX上进行了测试。

按步骤测试

通过Composer在仓库内检查测试组件

composer update

使用Testrunner(必需的开发包)和Docker,只需一条命令即可执行测试

vendor/bin/dep testrunner