tdwesten / statamic-builder
Statamic 的流畅蓝图和字段集构建器。
Requires
- php: ^8.2
- illuminate/support: ^10.0|^11.0
- laravel/framework: ^10.0|^11.0
- statamic/cms: ^4.46|^5.0
Requires (Dev)
- laravel/pint: ^1.7
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.33
- pestphp/pest-plugin-laravel: ^2.2
- spatie/laravel-ray: ^1.36
This package is auto-updated.
Last update: 2024-09-27 14:32:16 UTC
README
Statamic Builder
Statamic Builder 可以加速构建 Statamic 网站。它提供了一种清晰的方法,使用 PHP 类来定义蓝图、字段集、集合、导航和分类。与编写 YAML 文件相比,这种方法提高了代码的可读性和可维护性。
例如,您可以定义一个集合蓝图如下
<?php namespace App\Blueprints; use Tdwesten\StatamicBuilder\Blueprint; use Tdwesten\StatamicBuilder\FieldTypes\Section; use Tdwesten\StatamicBuilder\FieldTypes\Text; use Tdwesten\StatamicBuilder\FieldTypes\Tab; class PageBlueprint extends Blueprint { public $title = 'Page'; public $handle = 'page'; public $hidden = false; public function registerTabs(): Array { return [ Tab::make('General', [ Section::make('General', [ Text::make('title') ->displayName('Title') ->instructions('The title of the page') ->localizable() ->required() ]), ]), ]; } }
安装
您可以使用 composer 安装此插件。在您的终端中运行以下命令以安装插件。
composer require tdwesten/statamic-builder
蓝图和字段集
此插件允许您以流畅的方式创建蓝图和字段集。这使得定义和维护蓝图和字段集更加容易。
如何创建蓝图
-
运行以下命令创建一个新的蓝图,例如为页面蓝图
php artisan make:blueprint PageBlueprint
-
在生成的文件中定义您的蓝图。例如
<?php namespace App\Blueprints; use Tdwesten\StatamicBuilder\Blueprint; use Tdwesten\StatamicBuilder\FieldTypes\Assets; use Tdwesten\StatamicBuilder\FieldTypes\Section; use Tdwesten\StatamicBuilder\FieldTypes\Text; use Tdwesten\StatamicBuilder\FieldTypes\Tab; class PageBlueprint extends Blueprint { public $title = 'Page'; public $handle = 'page'; public $hidden = false; public function registerTabs(): Array { return [ Tab::make('General', [ Section::make('General', [ Text::make('title') ->displayName('Title') ->instructions('The title of the page') ->required(), Assets::make('image') ->displayName('Image') ->maxItems(1) ->instructions('The image of the page') ->required(), ]), ]), ]; } }
-
在您的
config/statamic/builder.php
文件中注册蓝图<?php return [ 'blueprints' => [ 'collections.pages' => [ 'page' => \App\Blueprints\PageBlueprint::class, ], ], ];
-
就这样!您现在可以在 Statamic 应用程序中使用您的蓝图。
如何创建字段集
-
运行以下命令创建一个新的字段集,例如为英雄字段集
php artisan make:fieldset HeroFieldset
-
在生成的文件中定义您的字段集。例如,向英雄字段集添加标题和图片字段
<?php namespace App\Fieldsets; use Tdwesten\StatamicBuilder\Fieldset; use Tdwesten\StatamicBuilder\FieldTypes\Assets; use Tdwesten\StatamicBuilder\FieldTypes\Text; class HeroFieldset extends Fieldset { public function registerFields(): array { return [ Text::make('title') ->displayName('Title') ->instructions('The title of the hero') ->required(), Assets::make('image') ->displayName('Image') ->maxItems(1) ->instructions('The image of the hero') ->required(), ]; } }
-
在您的
config/statamic/builder.php
文件中注册字段集<?php return [ 'blueprints' => [ 'collections.pages' => [ 'page' => \App\Blueprints\PageBlueprint::class, ], ], 'fieldsets' => [ \App\Fieldsets\HeroFieldset::class, ], ];
-
现在您可以在蓝图中使用您的字段集。例如
<?php namespace App\Blueprints; use App\Fieldsets\HeroFieldset; use Tdwesten\StatamicBuilder\Blueprint; class PageBlueprint extends Blueprint { public $title = 'Page'; public $handle = 'page'; public $hidden = false; public function registerTabs(): Array { return [ Tab::make('General', [ Section::make('General', [ HeroFieldset::make('hero'), ]), ]), ]; } }
支持的字段类型
支持所有默认的 Statamic 字段类型。您可以通过利用 Field
类来创建自定义字段类型。例如,要创建自定义字段类型,您可以使用以下代码
Field::make('custom_field') ->withAttributes([ 'type' => 'custom_type', 'display' => 'Custom Field', 'instructions' => 'This is a custom field', 'required' => true, 'options' => [ 'option1' => 'Option 1', 'option2' => 'Option 2', ], // Add more attributes here... ]);
如何注册集合、分类和全局变量
此插件允许您在 PHP 类中定义集合、分类和全局变量,简化了定义和管理这些变量的过程。
如何注册集合
-
为文章集合蓝图生成新的集合蓝图,例如运行以下命令
php artisan make:collection Articles
-
在生成的文件中定义您的文章集合蓝图。例如,该文件具有定义集合蓝图的所有选项。例如
<?php namespace App\Collections; use Statamic\Facades\Site; use Tdwesten\StatamicBuilder\BaseCollection; class Articles extends BaseCollection { /** * Return the handle for the collection * * Example: return 'blog'; */ public static function handle(): string { return 'articles'; } /** * Return the title for the collection * * Example: return 'Blog'; */ public function title(): string { return 'Articles'; } // Add more options here... }
-
将集合添加到
config/statamic/builder.php
文件<?php return [ 'collections' => [ \App\Collections\Articles::class, ], ];
如何注册分类
-
为分类蓝图生成新的分类蓝图,例如运行以下命令
php artisan make:taxonomy Categories
-
在生成的文件中定义您的分类。例如,该文件具有定义分类的所有选项。例如
<?php namespace App\Taxonomies; use Statamic\Facades\Site; use Tdwesten\StatamicBuilder\BaseTaxonomy; class Categories extends BaseTaxonomy { /** * Return the handle for the taxonomy * * Example: return 'tags'; */ public static function handle(): string { // TODO: Change to your taxonomy handle return 'categories'; } /** * Return the title for the taxonomy * * Example: return 'Tags'; */ public function title(): string { // TODO: Change to your taxonomy title return 'Categories'; } // Add more options here... }
-
将分类添加到
config/statamic/builder.php
文件<?php return [ 'taxonomies' => [ \App\Taxonomies\Categories::class, ], ];
如何注册全局集
-
为网站设置全局集蓝图生成新的全局集蓝图,例如运行以下命令
php artisan make:global-set SiteSettings
-
在生成的文件中定义您的全局集。例如,该文件具有定义全局集的所有选项。例如
<?php namespace App\Globals; use Statamic\Facades\Site; use Tdwesten\StatamicBuilder\BaseGlobalSet; class SiteSettings extends BaseGlobalSet { /** * The handle for this global set * * Example: return 'footer'; */ public static function handle(): string { return 'site_settings'; } /** * The title for this global set * * Example: return 'Footer'; */ public function title(): string { return 'Site Settings'; } // Add more options here... }
-
将全局集添加到
config/statamic/builder.php
文件<?php return [ 'globals' => [ \App\Globals\SiteSettings::class, ], ];