creode/nova-page-builder

在Laravel Nova中暴露了一个简单可定制的页面构建器,基于Flexible Content字段构建。

1.4.0 2024-07-04 08:50 UTC

README

Latest Version on Packagist Total Downloads

在Laravel Nova中暴露了一个简单可定制的页面构建器,基于Flexible Content字段构建。

安装

您可以通过composer安装此包

composer require creode/nova-page-builder

可选,您可以使用以下命令发布视图

php artisan vendor:publish --tag="nova-page-builder-views"

用法

此包从之前名为 nova-pages 的模块中拆分出来。该模块提供了易于创建新组件的页面构建器功能。此模块将页面构建器功能与页面管理功能分离,允许您在不需要页面管理的情况下使用页面构建器。

此模块大量使用nova-flexible-content包,因此在使用此包之前,您应该熟悉该包。

页面构建器字段

此模块创建了一个新的字段类型,Creode\NovaPageBuilder\Nova\Fields\PageBuilder。此字段类型是Flexible字段类型的包装,因此您可以使用与Flexible字段类型相同的所有方法。唯一的区别是,PageBuilder字段类型将自动注册您创建的所有组件。

排除组件

如果您希望排除某些组件在字段中使用,您可以通过将组件名称数组传递到PageBuilder字段类型的exclude方法来实现。例如,如果您想排除Banner组件,您可以在您的Page Nova资源中添加以下内容

public function fields(Request $request)
{
    return [
        // ...
        PageBuilder::make('Content')
            ->exclude(['banner']),
    ];
}

渲染组件

此模块提供了一个可以用于在网站前端渲染组件的blade文件。

我们还包含一个需要在您的模型中添加的特质。此特质将允许您访问页面构建器字段的内容,并允许您将组件传递到blade文件中。该特质是Creode\NovaPageBuilder\Traits\HasPageBuilderContent。您可以在模型中使用此特质,如下所示

use Creode\NovaPageBuilder\Traits\HasComponents;

class Page extends Model
{
    use HasPageBuilderContent;

    /**
     * The name of your page builder field.
     */
    protected $componentField = 'content';
}

一旦将上述内容添加到您的模型中,您可以通过调用$page->components并将此传递到以下视图文件来渲染页面构建器字段的组件

例如

@include('page-builder::components', ['components' => $page->components])

扩展

如前所述,此模块不会定义任何页面内容的格式。然而,它包含使用最少代码定义内容块的架构。要定义新的内容块,您需要定义Creode\NovaPageBuilder\Abstracts\PageBlockAbstract类的扩展。然后,您应该在新服务提供者的boot方法中实例化您的新的类。

作为您新类的一部分,您必须定义一个"$label"字符串属性。这将是你新内容块的人类可读表示。您必须定义一个"$name"字符串属性。这将如何Laravel引用您的内容块。您必须定义一个"$view"字符串属性。这应该引用一个包含在渲染前端页面上的标记和/或模板逻辑的视图文件。您必须定义一个"fields"方法。这应该返回一个Laravel Nova字段对象数组。

更新日志

有关最近更改的更多信息,请参阅CHANGELOG

贡献

请参阅贡献指南以获取详细信息。

安全漏洞

请查阅我们的安全政策,了解如何报告安全漏洞。

鸣谢

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。