binomeway / nova-page-manager-tool

此包已被废弃,不再维护。没有建议的替代包。

Laravel Nova 管理页面工具。

v1.1.0 2021-08-26 19:41 UTC

This package is auto-updated.

Last update: 2024-06-27 02:16:11 UTC


README

Nova 页面管理工具

从 Nova 控制面板管理静态页面。

先决条件

此工具依赖于以下包

请参阅其文档获取安装和使用说明。

安装

NovaServiceProvider.php 中注册此工具

public function tools(){
    return [
        \BinomeWay\NovaPageManagerTool\NovaPageManagerTool::make(),
    ];
}

发布迁移。

php artisan vendor:publish --provider="\BinomeWay\NovaPageManagerTool\ToolServiceProvider" --tag="migrations"

配置工具。

php artisan vendor:publish --provider="\BinomeWay\NovaPageManagerTool\ToolServiceProvider" --tag="config"

可选,自定义工具视图。

php artisan vendor:publish --provider="\BinomeWay\NovaPageManagerTool\ToolServiceProvider" --tag="views"

使用方法

模板

定义模板

您可以通过创建一个类并从 BinomeWay\NovaPageManagerTool\Template 继承来定义一个新的模板。

namespace App\Templates;

use BinomeWay\NovaPageManagerTool\Template;

class AboutTemplate extends Template
{
    protected string $group = 'General'; // Displayed in the select field
    protected string $label = 'About Us'; // Displayed in the select field
    protected string $path = 'pages.about-us';
}

或使用生成器命令

php artisan nova-page-manager:template AboutTemplate

它将为您生成模板类和视图文件。

注册模板

定义好模板后,从服务提供者处注册。它可以放在 AppServiceProviderViewServiceProvider 或其他任何服务提供者中。

use  \BinomeWay\NovaPageManagerTool\Facades\TemplateManager;

public function boot() {
    TemplateManager::register([
   
       \App\Templates\AboutTemplate::class,
   
    ]);
}

页面构建器

定义块
namespace App\Blocks;

use BinomeWay\NovaPageManagerTool\Block;
use Laravel\Nova\Fields\Textarea;

class DescriptionSectionBlock extends Block
{
    /**
     * The layout's unique identifier
     *
     * @var string
     */
    protected $name = 'description-section';

    /**
     * The displayed title
     *
     * @var string
     */
    protected $title = 'Description Section';

    /**
     * The view path associated with this block.
     * @var string
     */
    protected string $component = 'blocks.description-section';

    /**
     * Get the fields displayed by the layout.
     *
     * @return array
     */
    public function fields()
    {
        return [
            Textarea::make(__('Description'), 'description')
        ];
    }
    
    public function customLogic(){
        // You can define custom methods and use them within view.
    }
}
注册块

AppServiceProviderboot 方法中,您可以使用 PageBuilder 门面来注册块。

// AppServiceProvider.php
use BinomeWay\NovaPageManagerTool\Facades\PageBuilder;

function boot() {
    
    PageBuilder::register([
        'description-section' => \App\Blocks\DescriptionSectionBlock::class,
    ]);
}
渲染块

在您的模板中,您可以遍历每个块并仅包含块关联的组件。

<x-app-layout>
    <x-slot name="header">
        {{ $page->title }}
    </x-slot>

    <div class="py-12 max-w-2xl mx-auto">
        <article class="prose prose-lg">
            @foreach($page->blocks as $block)
                @include($block->component())
            @endforeach
        </article>
    </div>
</x-app-layout>

预设

定义预设

待办事项:文档

注册预设

待办事项:文档

路线图

  • 页面构建器
  • 改进发布工作流程
  • 定时发布
  • 改进模板系统
  • 版本控制系统
  • 多语言支持
  • 协作编辑
  • 使工具更可扩展

致谢

变更日志

1.1.0

  • Page 资源添加了 排序
  • Page 添加了 URL 构建器。
  • 重大变更content 列表重构为 summary 列表。
  • meta 列表重构为 blocks 列表
  • 由于未使用,已移除 PageFactory。稍后将其添加回来。
  • Page 模型中的 status 标签添加了辅助方法。
  • 调整页面构建器

1.0.2

  • 实现了位置标签过滤

1.0.1

  • 将 'Other' 的文本更改为页面构建器
  • 将 'Meta' 的文本更改为块

1.0.0

  • 发布